C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: フォントが等幅かどうか調べたい


(過去ログ 26 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■12251 / inTopicNo.1)  フォントが等幅かどうか調べたい
  
□投稿者/ Hirotow (109回)-(2008/01/06(Sun) 14:10:42)

分類:[.NET 全般] 

先日のバイナリエディタの続きなのですが、
TextBoxを使用した処理だとあまりに重過ぎるようなので全体的にオーナードローで再作成したいと思っています。
そこでフォントを自由に変えられるようにしたいのですが、プロポーショナルなフォントを指定されると困ります。
そこで設定可能なフォントを等幅フォントのみに制限したいのですが検索しても見つかりません。
どなたかご存知の方がいましたらご協力をお願いいたします。
引用返信 編集キー/
■12252 / inTopicNo.2)  Re[1]: フォントが等幅かどうか調べたい
□投稿者/ やじゅ (1回)-(2008/01/06(Sun) 14:37:50)
やじゅ さんの Web サイト
No12251 (Hirotow さん) に返信
> そこで設定可能なフォントを等幅フォントのみに制限したいのですが検索しても見つかりません。
> どなたかご存知の方がいましたらご協力をお願いいたします。

フォント名だけでは判断出来かねますからね、
しいて言えば、特定の文字の大きさを調べて同一なら等幅と判断するくらいですかね。
特定の文字が何なのかは、いろいろな文字で調べてみるといいのでは。

文字列を描画したときの大きさを計測する
http://dobon.net/vb/dotnet/graphics/measurestring.html
引用返信 編集キー/
■12254 / inTopicNo.3)  Re[2]: フォントが等幅かどうか調べたい
□投稿者/ Hirotow (110回)-(2008/01/06(Sun) 15:45:29)
以下のようなコードにしたらサイズ調整はうまくいきました。

tlpMain.RowStyles[0].Height = Font.Height;
pbxHeader.Image = new Bitmap(pbxHeader.Width, pbxHeader.Height);
gHeader = Graphics.FromImage(pbxHeader.Image);
tlpMain.ColumnStyles[0].Width =
	gHeader.MeasureString("#00000000#", Font, 1024, StringFormat.GenericDefault).Width;
tlpMain.ColumnStyles[1].Width =
	gHeader.MeasureString("#00#01#02#03#04#05#06#07#08#09#0A#0B#0C#0D#0E#0F", Font, 1024, StringFormat.GenericDefault).Width;
pbxLineNo.Image = new Bitmap(pbxLineNo.Width, pbxLineNo.Height);
gLineNo = Graphics.FromImage(pbxLineNo.Image);
pbxHexView.Image = new Bitmap(pbxHexView.Width, pbxHexView.Height);
gHexView = Graphics.FromImage(pbxHexView.Image);
pbxTextView.Image = new Bitmap(pbxTextView.Width, pbxTextView.Height);
gTextView = Graphics.FromImage(pbxTextView.Image);

リンク先が非常に参考になりました。
ありがとうございます。
ただどのタイミングで再描画を呼び出すべきかいまいちわかりませんのでご教授をいただけると幸いです。

■No12252 (やじゅ さん) に返信
> ■No12251 (Hirotow さん) に返信
>>そこで設定可能なフォントを等幅フォントのみに制限したいのですが検索しても見つかりません。
>>どなたかご存知の方がいましたらご協力をお願いいたします。
> 
> フォント名だけでは判断出来かねますからね、
> しいて言えば、特定の文字の大きさを調べて同一なら等幅と判断するくらいですかね。
> 特定の文字が何なのかは、いろいろな文字で調べてみるといいのでは。
> 
> 文字列を描画したときの大きさを計測する
> http://dobon.net/vb/dotnet/graphics/measurestring.html

引用返信 編集キー/
■12256 / inTopicNo.4)  Re[3]: フォントが等幅かどうか調べたい
□投稿者/ やじゅ (2回)-(2008/01/06(Sun) 18:38:18)
やじゅ さんの Web サイト
No12254 (Hirotow さん) に返信
> ただどのタイミングで再描画を呼び出すべきかいまいちわかりませんのでご教授をいただけると幸いです。
>

普通に考えれば、入力後だと思います。
どのように作成されているのかイメージ出来ないので、一般的な返答しか出来ないです。
引用返信 編集キー/
■12257 / inTopicNo.5)  Re[4]: フォントが等幅かどうか調べたい
□投稿者/ Hirotow (111回)-(2008/01/06(Sun) 22:30:08)
こんな感じのものです。
http://mui-style.net/data/BinaryEditor_Mikansei_A.zip

現状では描画が遅すぎて使い物になりませんが。
No12256 (やじゅ さん) に返信
> ■No12254 (Hirotow さん) に返信
>>ただどのタイミングで再描画を呼び出すべきかいまいちわかりませんのでご教授をいただけると幸いです。
>>
>
> 普通に考えれば、入力後だと思います。
> どのように作成されているのかイメージ出来ないので、一般的な返答しか出来ないです。
引用返信 編集キー/
■12261 / inTopicNo.6)  Re[5]: フォントが等幅かどうか調べたい
□投稿者/ やじゅ (3回)-(2008/01/07(Mon) 00:05:36)
やじゅ さんの Web サイト
No12257 (Hirotow さん) に返信
> こんな感じのものです。
> http://mui-style.net/data/BinaryEditor_Mikansei_A.zip

表示だけなら遅いように思えなかったわけですが・・・
入力して影響するところだけ描画しなおせばいいんじゃないですか

引用返信 編集キー/
■12265 / inTopicNo.7)  Re[6]: フォントが等幅かどうか調べたい
□投稿者/ Hirotow (112回)-(2008/01/07(Mon) 01:12:06)
GUIスレッドの処理でCPU使用率が2桁いくと落ち着かない^^
ダブルバッファ化とかで多少は改善されてはいてもやっぱり遅い。
Starlingとかだとこの1/5くらいの負荷なのにorz

表示機能は(負荷の高さを除けば)ほぼ完成したので後は編集機能だけ。
これもある程度まではテキストボックスベースで実装できているのでコピペして追記^^。
あとテストアプリはD&Dで読むように変更しました。
http://mui-style.net/data/BinaryEditor_Mikansei_B.zip
No12261 (やじゅ さん) に返信
> ■No12257 (Hirotow さん) に返信
>>こんな感じのものです。
>>http://mui-style.net/data/BinaryEditor_Mikansei_A.zip
>
> 表示だけなら遅いように思えなかったわけですが・・・
> 入力して影響するところだけ描画しなおせばいいんじゃないですか
>
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -