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

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

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

Re[2]: フォントの高さの取得について


(過去ログ 69 を表示中)

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

■40240 / inTopicNo.1)  フォントの高さの取得について
  
□投稿者/ BAMBi (5回)-(2009/08/21(Fri) 19:30:06)

分類:[.NET 全般] 

お世話になっております。

VB初心者です。
現在、VB6.0からVB.NETへのコンバートを行っております。

VB6.0で下記の処理を行っているのですが、VB.NETにコンバートした際にうまくいかず四苦八苦しております。
<VB6.0>
If FlexGrid.CellHeight > Form.TextHeight(Str) * 2 Then
FlexGrid.CellHeight = Form.TextHeight(Str)
End If

StrはForm上のTextBoxのテキストで、VB.NETで下記のように行ってみたのですが、想定外の結果が出てきてしまいます。
<VB.NET>
If FlexGrid.CellHeight > TextBox.Font.GetHeight * 2 Then
FlexGrid.CellHeight = TextBox.Font.GetHeight
End If

VB6.0とVB.NETで比べるとForm.TextHeight(Str)の数値がかなり違うのですが、どのように設定するべきなのでしょうか?
Form.TextHeight(Str)でTextBoxのテキストの高さを取得していると思ったのですが、全く違うのでしょうか?

よろしくお願い致します。

引用返信 編集キー/
■40244 / inTopicNo.2)  Re[1]: フォントの高さの取得について
□投稿者/ GOD (5回)-(2009/08/21(Fri) 20:12:43)
2009/08/21(Fri) 20:13:06 編集(投稿者)

No40240 (BAMBi さん) に返信
> VB6.0とVB.NETで比べるとForm.TextHeight(Str)の数値がかなり違うのですが、どのように設定するべきなのでしょうか?
> Form.TextHeight(Str)でTextBoxのテキストの高さを取得していると思ったのですが、全く違うのでしょうか?
VB6側のForm.ScaleModeはどうなってますか?(Twip?)
VB.NETのFontはピクセル単位で返してるはずです。

http://dobon.net/vb/bbs/log3-10/5849.html
とか。

引用返信 編集キー/
■40247 / inTopicNo.3)  Re[1]: フォントの高さの取得について
□投稿者/ 魔界の仮面弁士 (1241回)-(2009/08/21(Fri) 20:23:04)
2009/08/21(Fri) 20:25:10 編集(投稿者)

No40240 (BAMBi さん) に返信
> Form.TextHeight(Str)でTextBoxのテキストの高さを取得していると思ったのですが、

VB6 の Form.TextHeight と、.NET の Font.GetHeight を比較するのであれば、
まずは、(VB6の)ScaleMode 等で設定してある単位系と、(.NETの)GetHeight の単位系とが
合致しているかどうかを調べてみてください。(GetHeight では、別の単位系も選択できます)

また、テキストサイズの測定には、TextRenderer.MeasureText や Graphics.MeasureString など、
目的などに応じて幾つかの実装が用意されていますので、それらも併せて調べてみてください。


> 全く違うのでしょうか?
GDI と GDI+ の違いにも注意してください。

http://support.microsoft.com/kb/307208/ja
http://msdn.microsoft.com/ja-jp/library/ms171753.aspx
引用返信 編集キー/
■40257 / inTopicNo.4)  Re[2]: フォントの高さの取得について
□投稿者/ BAMBi (6回)-(2009/08/21(Fri) 23:21:45)
ご返答ありがとうございます。

GOD様
>VB6側のForm.ScaleModeはどうなってますか?(Twip?)
VB6側のForm.ScaleModeはTwipでした。

http://dobon.net/vb/bbs/log3-10/5849.html
を公式を参考にさせて頂きました。

魔界の仮面弁士様
>また、テキストサイズの測定には、TextRenderer.MeasureText や Graphics.MeasureString など、
今回はTextBox.Font.GetHeightで大丈夫でした。
貴重なご意見ありがとうございました。

下記が解決された.NETの処理です。

Dim h As Integer
Dim TwipHeight As Double
Dim PixTBoxHeight As Double

'ディスプレイの高さ(解像度)
h = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height()
'Twips = (Pixel / 解像度) * 1440
'Pixel = Twips * 解像度 /1440
'FlexGrid.CellHeight = (TwipTBoxHeight / h) * 1440
PixTBoxHeight = FlexGrid.CellHeight * h / 1440
If PixTBoxHeight > TextBox.Font.GetHeight * 2 Then
PixTBoxHeight = TextBox.Font.GetHeight
End If

GOD様、魔界の仮面弁士様、本当にありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -