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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.40240 の関連記事表示

<< 0 >>
■40240  フォントの高さの取得について
□投稿者/ BAMBi -(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のテキストの高さを取得していると思ったのですが、全く違うのでしょうか?

    よろしくお願い致します。
親記事 /過去ログ69より / 関連記事表示
削除チェック/

■40247  Re[1]: フォントの高さの取得について
□投稿者/ 魔界の仮面弁士 -(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
記事No.40240 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40244  Re[1]: フォントの高さの取得について
□投稿者/ GOD -(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
    とか。
記事No.40240 のレス /過去ログ69より / 関連記事表示
削除チェック/

■40257  Re[2]: フォントの高さの取得について
□投稿者/ BAMBi -(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様、魔界の仮面弁士様、本当にありがとうございました。
記事No.40240 のレス / END /過去ログ69より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -