[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/29 10:32 / Filesize : 198 KB / Number-of Response : 931
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part57



1 名前:デフォルトの名無しさん [2010/03/20(土) 02:15:38 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part56
pc12.2ch.net/test/read.cgi/tech/1267348401/


関連スレ
C#, C♯, C#相談室 Part55(実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
pc12.2ch.net/test/read.cgi/tech/1206447234/1

335 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:48:12 ]
正直、elseより後が長い方が可読的って感覚は微妙。

完全には否定しないけどね。
俺もCの二重インクルード防止のなんかには、一般的な作法じゃないけど
空っぽの#ifdefを書くようにしてるから気持ちは分かる。

ただ、ifのブロックなんてCのインクルードファイルほど行数あるわけじゃないからねえ。
普通は。

336 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:49:36 ]
俺はif節がよほど短いならさっさと脱出させてしまうなぁ

337 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:52:57 ]
ListView.ListViewItemCollection.AddRange(ListView.ListViewItemCollection items)
のオーバーロードバージョンてどうやって使うんですか?サンプルないですか?
listView1.Items.AddRange(listView2.Items)とかやるとArgumentExceptionになるんですが…


338 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:00:08 ]
>>337
実質内部で使う用と考えていい

339 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:03:02 ]
>>338
ありがとうございます。CopyToします。

340 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:08:09 ]
インデント深くしたくないから、すぐ脱出するコード書くなぁ。

341 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:13:58 ]
画像処理系のソフト作っているんだけど
DirectXSDKを使わないとグラボの性能ほとんど使わないのかな?

342 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:23:00 ]
いやDirectXと画像処理は関係ない
グラボはリアルタイムな処理に使うものであって静的な画像処理にはあまり使われない
シェーダ使えばできるけど面倒で制限が多い割には体感的にそんなに速くなるとは思えない

343 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:27:04 ]
思えないね



344 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:40:07 ]
動画だとCUDAとかViewerでもグラボを使っているものがあるから
そんなに変わるのかなと思ったんだけど使い方によるんですね

345 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:40:46 ]
ていうか、WPF使ったら勝手に使われる。

346 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:42:57 ]
WPF使おうが何使おうが明示的にグラボ使わない限りアプリケーションの画像処理には関係ない

347 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:46:35 ]
>>346
画像処理と言っても色々ある。
単純なファイル形式変換ならグラボ関係ないが、
拡大、縮小、色変換、フィルタリングとかかけるならWPFやSilverlight使った方が圧倒的に便利かと。

348 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:51:01 ]
そうか?
簡単な拡大縮小などで細かい制御を必要としないならともかく
シェーダ書くなら余計に手間かかるよ

349 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:53:03 ]
>>348
シェーダー書かんでも代わりに色々やってくれるところがWPFのいいところじゃないの。

350 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:56:56 ]
WPFでフィルタなどのエフェクトを自作しようと思ったら
ビットマップのピクセルをCPUで直接処理するのが嫌ならピクセルシェーダを書くしかない

351 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:57:02 ]
>>323
無駄なtrueを書かない。
× if ( flag == true ) { }
○ if ( flag ) { }

352 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 23:59:56 ]
わざわざ28レスも前に指摘することかよ

353 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:01:58 ]
ワラタ



354 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:10:45 ]
Windows.Formのタイトルバー?(タイトルと拡大縮小閉じるボタンのところ)
にコンポーネントを追加することはできますか?

同じボタンを1つ増やしたいのですが。

355 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:11:54 ]
>>347
おお、今までWPF使ったことなかったけど使ってみようかな
そんな難しい処理じゃなくて画像Viewer的なのを作りたいだけなので
勉強してみようかな

356 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:18:59 ]
>>351
> 無駄なtrueを書かない。
> × if ( flag == true ) { }
> ○ if ( flag ) { }


C畑出身の古参か?

時代は可読性を求める時代だぞ。

357 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:24:06 ]
>>356
それは「無駄な可読性」というものだ。
ただし、C#はC/C++と比べてif節はbool型しか取らないから、
自然、これまでよりも式が厳格になる傾向があるけどな(式が非ゼロかどうかの判定とか)

358 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:26:58 ]
flagの名前によるな
isHoge
とかならif(isHoge==true)は冗長だろ

359 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:29:48 ]
bool評価なのにわざわざ flag == true って可読性高い?
大切なことなので2回言いましたってことか?

360 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:29:57 ]
>>354
まあ無理
どうしてもと言うならタイトルバーなしにしてそれっぽいのを自分で描画する

361 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:35:13 ]
>>332
そこで.NET4.0の契約プログラミングですよ。

362 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:43:42 ]
>>360
ありがとうございます。
小さいウインドウから元のサイズにするだけなので
コンテキストメニューで代用します。

363 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:46:41 ]
>>359
ある種の思い込みがある人たちにとってはそうなんでしょ。
思い込みっていうか、たぶん「ifが取るのはbool型の値」という風に論理的に考えず、
経験的に「ifの後に来るのは2項演算じゃないと気持ち悪い」と感じるタイプ。

そういう人は自分の感覚を修正すべきだね。



364 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:51:35 ]
flag==true って書くのはいいけど、
flag!=true とか !(flag==true) とか !(flag==false) とかいろんなパターンで使われたらもうイライラ。

365 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:19:50 ]
これは言葉に直すと素直だけど
if(n>0)
これはわかりにくいよね
if(n<=0)
でもelseの方の文を長くしたいならこうなる
if(!(n>0))

366 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:21:31 ]
>>365
もうねろよ。疲れてんだよ。

367 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:53:35 ]
WPF負荷高いね
ボタン4つ作っただけなのにウィンドウサイズ変えると
c2dの使用率50%になっちゃう

368 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:54:22 ]
ねーよ

369 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 01:59:06 ]
負荷は大きい、小さい。高い低いじゃない。

370 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:04:15 ]
大負荷 の検索結果 約 5,920,000 件中 1 - 100 件目 (0.28 秒)
小負荷 の検索結果 約 3,390,000 件中 1 - 100 件目 (0.32 秒)
高負荷 の検索結果 約 2,480,000 件中 1 - 100 件目 (0.27 秒)
低負荷 の検索結果 約 1,260,000 件中 1 - 100 件目 (0.42 秒)

371 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:09:59 ]
中負荷 の検索結果 約 7,770,000 件中 1 - 10 件目 (0.21 秒)

372 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:11:12 ]
結論

負荷は中というのが正しい。

373 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:15:40 ]
>>322
いつ時計を作ってたの?
時計をタイマーで作るの?




374 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 02:22:53 ]
"大負荷" の検索結果 約 10,500 件中 1 - 50 件目 (0.26 秒)
"小負荷" の検索結果 約 13,500 件中 1 - 50 件目 (0.28 秒)
"高負荷" の検索結果 約 461,000 件中 1 - 50 件目 (0.31 秒)
"低負荷" の検索結果 約 123,000 件中 1 - 50 件目 (0.39 秒)
"中負荷" の検索結果 約 16,500 件中 1 - 50 件目 (0.33 秒)

375 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:07:34 ]
"負荷が大きい" の検索結果 約 2,120,000 件
"負荷が小さい" の検索結果 約 1,070,000 件
"負荷が高い" の検索結果 約 69,000 件
"負荷が低い" の検索結果 約 1,600,000 件
"負荷が中い"との一致はありません。

"負荷が中くらい" の検索結果 約 18,600 件

376 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:19:07 ]
一方その頃、「そんな大きなフカヒレは入らないよう!」
という夢を中国が見ていた。

377 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 03:36:16 ]
いつまでやってんだ。スレタイ読め

378 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 05:35:51 ]
本当に下らないかもしれませんが・・・

*.exe形式で配布〜ローカルにインストールして使う、
WEB上のXMLを取得して処理したり、
XML-RPCでブログ投稿
などを行うソフトを作りたいのですが、
こういうソフトは、どういう単語で検索すれば情報が集められるのでしょうか

勉強するとっかかりが、全くわかりません。
本1冊と、C#入門、みたいなサイトは一通り勉強してきましたが
この辺の情報はなかったです。
「WEBサービス」では、サーバサイドの話のようで・・・

379 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 07:06:03 ]
XML Web サービスクライアント、だな。

380 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 08:41:42 ]
ちなみに「*.exe形式で配布〜ローカルにインストールして使う、」
というのは実行ファイル形式のインストーラーのことだ。
基本的にはこれは.NETで作らない方がいい。
自己解凍書庫、インストーラー作成ツールなどを使う。

381 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:18:09 ]
グローバリゼーションの警告うぜぇ…

382 名前:デフォルトの名無しさん [2010/03/24(水) 11:41:39 ]
directxはc++とかと構造は同じ?


383 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:48:42 ]
>>382
その質問は、カレーとスプーンが構造が同じかと問うていることに等しい。
ちなみに、DirectXはCOMでできている。



384 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:49:29 ]
単なるAPIの塊なのにC++から呼び出す場合とC#から呼び出す場合で違ってたら笑えない

385 名前:デフォルトの名無しさん [2010/03/24(水) 13:48:55 ]
レジストリの登録について質問があります。
自作のアプリケーションでjpgファイルを開くために、
registryValue = programpath + " %1";
として登録しました。
これで、アイコンを選んで、右クリックで登録したメニューを実行すると、
「パスに無効な文字が含まれています」とエラーになります。

どうやら、%1を
C:\DOCUME~1\USERNA~1\MYDOCU~1\data\20EAE6~1\PIC~2.JPG
のように、アプリケーションのショート名(?)に展開しているようです。
これを回避するには、どのようにしたらよいでしょう?


386 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:39:12 ]
>>383
あっそう

387 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:05:37 ]
string形式の変数aの指定した行の文字列を取得したいのですがどうすれば取得できますかね

388 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:06:27 ]
String.Splitで配列に分解してアクセスすれ

389 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:08:09 ]
>>387
StringReader.ReadLine

390 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:11:51 ]
>>379>>380
ありがとうございます。
知りたかった情報が見つかりました

391 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:31:41 ]
>>385
8.3形式のファイル名が問題なんじゃなくて、programpathに半角スペースが入っているせいで実行ファイルが見つかってないんじゃない?

392 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:34:36 ]
WPFとC#のコードの連携の説明がどこにもない
コードからウィンドウサイズ変えることすらできない
使えない

393 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:38:08 ]
お前の使えなさっぷりをそんなにアピールしなくても大丈夫、世間は意外に優しいよ



394 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 20:56:25 ]
WPFのスレで聞けばいいのに
みんな始めたばかりだからやさしいぞ

395 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:17:27 ]
自クラスのprivateフィールド変数もプロパティを
通してでないとアクセスできないようにする方法ありますか?

396 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:20:18 ]
無理だろ

397 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:22:23 ]
特にないな
変数名を\uxxxx並べた理解不能なのにしとくとかどう?

398 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:25:15 ]
自動実装プロパティにするくらい

399 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:35:14 ]
自クラスくらい自分が責任持って扱えよって思っちゃうけど、
複数人で1つのクラスいじってるような場面だとそうはイカンザキ?

400 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:42:59 ]
その自動プロパティはgetsetの中身を省略することらしいですが
ここに式を記述してもいいのでしょうか?
そしたら思っているようなことができそうなんですが

public string Name
{
set{ this.Name=valeu;}
}

例えばこんな感じ

401 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:44:20 ]
できるようになったら個人的にうれしいけど無理

402 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:45:38 ]
>>395
そんなフィールド(とプロパティ)が存在しうるとして、
プロパティーのセッターやゲッターは自分自身を呼び出してバッキングフィールドに
値を代入したり取得したりするんだろうか。

それって無限に再帰することになるんじゃないか?
少しは頭を使おうよ。

まあ気持ちは理解できなくもないがw
VBはせっかくメソッド内Static変数があるんだから、ゲッターからもセッターからも
アクセスできる位置にメソッド内Static変数が書ける構文さえ用意してくれれば
バッキングフィールドを不要にできるんだけどな。

ことほど左様に、VBチームはやる気がなさ杉気が利かな杉。
開発者までVB厨っぽい。

403 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:46:04 ]
>>395
それって、ごく普通のプロパティ公開のシチュエーションじゃないの?



404 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:48:03 ]
privateな範囲くらいテメェで管理しろってことだろーけどね

405 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:48:13 ]
msdn.microsoft.com/ja-jp/ff383208.aspx

406 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:50:34 ]
別ファイルにpartialで分けて、privateフィールドは見ない振りをする

407 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:51:34 ]
ProrertyChangedイベントを使えば>>395のご所望に近いことが出来そうな気が
しないでもないでもない

408 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:54:45 ]
privateなフィールドに値を代入する時に適切な定義域かどうか確認するのがメンドイとか、そんな理由だろ。
フィールドに属性か何かで定義域指定できるようになったら蝶うれしいぞ。

409 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:55:31 ]
そしてDbcへ・・・

410 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:57:15 ]
privateな範囲ならDebug.Assert入れとけばいいじゃん

411 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:02:04 ]
正直契約プログラミングはかなり興味ある。

412 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:02:36 ]
興味あるならVS2010試そうぜ

413 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:03:49 ]
ああ、そういうことか。
自分のクラスのprivateなメンバ変数に対してアクセスせず、
常にプロパティ越しにアクセスしたい、ということか。
すればいいじゃん。

こういうのはコーディングテクニックじゃなくて、ポリシーで解決すべきことがらだ。

どうしてもこねくり回したいなら
private変数と抽象プロパティを定義した親クラスを作って継承すればいい。
そんな必要性は感じられないが。

だいたい、VSなら特定の変数がどこで参照されてるか全検索は簡単にかけられるんだから、
一括で修正してしまえば済む話。



414 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:04:34 ]
すべての変数がプロパティになればいいのに

415 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:08:51 ]
元の木阿弥

416 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 23:12:42 ]
まあ現実的な妥協としてはEditorBrowsable(false)を付けるぐらいかね。
あとは>>413の言うようにベースクラスのプロパティをフィールド代わりにするか。

でも一番の方法は、そんな下らないことは考えないこと。

417 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:34:54 ]
>>414
否、すべての変数はグローバル変数とするべきだ

418 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 02:21:04 ]
( ̄ー ̄)ふっ

419 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 03:19:34 ]
(^-^)♪

420 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 04:35:11 ]
ttp://msdn.microsoft.com/ja-jp/ff357685.aspx
この連載いいねー簡潔でわかり易いし
疑問に思ってたことがいくつか解決した
C#4.0はpythonでやってたようなことができるみたいだな

421 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:32:33 ]
C#のクラスってC言語でいう構造体の延長だろ
たくさんのデータを含めるし。

422 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:37:21 ]
えっ!?

423 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:40:40 ]
第12回の「4. スレッド プールの何が問題なのだろう?」の話がかなりでたらめな件




424 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:52:00 ]
でたらめはお前だカス

425 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:52:18 ]
Indexというプロパティで配列の添え字範囲チェックしてるんだけど
Indexを呼び出す側でもやっぱり添え字でチェックして2重になってるんだけど
やっぱそういうもんですか?
それとこの場合ゲッターの戻り値どうすればいいでしょうか?

public int Index{set{if(0<=value)_index=value;}}

private void hoge()
{

}

426 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 07:55:05 ]
誤って途中で書き込んでしまった
private void hoge()
{
++Index;
if(0<=idx && list.Count>idx) a(list[idx]);
}

427 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 08:39:59 ]
>>425
基本的に、添字チェックはCLIのレベルで自動でやってくれるから必ずしもやらなくていい。
(すなわち添字チェックは最悪ひとつも書かなくていい。失敗したら例外が発生する)
で、そのセッターってなんかおかしくね?

428 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:16:02 ]
てことは、tryで包み込むということかな
なんかどこまで例外処理を書けばいいか迷うね
下手したら同じ例外処理をいくつものクラス間で
3重4重やってしまうことになるわけで

続行して問題が出る場合以外は
条件分岐を極力書かずにtryで済ませる方が
いいような気がしてきた

429 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:22:04 ]
例えば、picturebox.loadにしてもファイルが無ければ平気でエラー出して強制終了なるし
GetDirectoriesでもアクセスできないディレクトリを検索してエラー吐くし
.Netで用意されているクラスですらエラー出すんだから
正常な値であるはずという前提で作っていった方がいいのかな

430 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 09:30:11 ]
おいおい・・・

431 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 13:19:43 ]
>>428
最初の質問の時に「2度も添字チェックが必要なのかと」問われたので
必ずしもやらなくてもいいと答えただけで、
例外処理と明示的な添字チェックと比較して、
より書きやすい方法で書けばいいんだよ。

で、添字処理を自前でやるsetter/getterって、
C#で今まで必要になったことが一度もないんだが。オレだけ?
標準ライブラリのコンテナ使うだけで、困った事無い。

432 名前:デフォルトの名無しさん [2010/03/25(木) 15:12:48 ]
Graphicsで縁取り文字列を書こうとしてて問題が出てきたので誰か良い案があったら教えて下さい
↓のようにAddStringでpathに作ったアウトラインをWidenで太くしてやるやり方が
ググッたらシンプルなので使おうとしたのだけど、フォントサイズに対してWidenで太くする
サイズ(コード内でいうwidth)がでかくなるにつれ漢字などの細かい部分で意図しないツノが生えてきてしまうんだ
(このコードで言えば「刷」の左上など)
この現象の回避策や、他のシンプルな縁取り文字作成方法があったら教えて下さい(元からそういうフォントを使えというのは無しで)

// gはGraphics, pathはGraphicsPath
Font font = new Font("メイリオ", 26.25, FontStyle.Bold);
Single sizeInPixels = font.SizeInPoints * g.DpiY / 72F; // ピクセル単位のサイズに変換
Single width = 5.0F;

path.AddString("印刷中", font.FontFamily, (Int32)font.Style, sizeInPixels, new PointF(10, 10), null);
using (Pen pen = new Pen(Color.Black, width)) {
path.Widen(pen);
}
g.FillPath(Brushes.Black, path);

433 名前:デフォルトの名無しさん [2010/03/25(木) 15:50:35 ]
>>432ですけど自己解決しました。
Widenに使うPen(コードで言うpen)のLineJoinプロパティをLineJoin.Miter(デフォルト)以外にしたら出なくなった。
ついでにLineJoinの値によっては柔らかい感じにもできることが分かって
さらに得した気分。
お邪魔しました〜



434 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:06:25 ]
添え字のエラーを例外で処理するのはダメだろ
原則「発生したらバグ」の類の例外だ
それにIndexOutOfRangeやNullReferenceのような例外は一度出たら
頻繁に出ることが多いので例外で処理すると極端にパフォーマンスが低下することがある

435 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:12:11 ]
はぁ!?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<198KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef