none
Graphic 和 Handle 的關係?? RRS feed

  • 問題

  • 請問一下各位

    我有一個 textbox 因版面的關係長度不是很長,無法顯示出所有的字,

    所以我必須將multiline 設成 true,但是 textbox的大小卻不會自動改變,

    所以還是只能看到一行,我就想到先查詢字串的高度,在去調整textbox

    的大小

     

    我用了一個function

     

    public int GetStringHeight(string strMeasureString, System.Drawing.Font stringFont, System.IntPtr hwnd)
            {
                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromHdc(hwnd))
                {
                    return (int)g.MeasureString(strMeasureString, stringFont).Height;
                }
            }

    可是我不清楚 System.IntPtr hwnd 該輸入什麼?

    可能我對Graphic 還有 handle 等觀念不熟的原因,

    請問各位我該怎麼做才能求得字串的高度

    2006年11月15日 上午 03:48

解答

  • 恩 我查詢過許多論壇

    在智慧型裝置這邊確實無法使用CreateGraphics

    看來我要迂迴處理了!

    2006年11月16日 上午 03:04

所有回覆

  • 以前做過類似的東西, 給你個範例, 假設button1.text 是你要測量的文字


                Graphics g = button1.CreateGraphics();
                SizeF n = g.MeasureString(button1.Text, button1.Font);
                System.Diagnostics.Debug.WriteLine(n.Height);

    這樣因該就OK拉, :)

    2006年11月15日 上午 04:56
  •   可是我的 textBox5 沒有 CreateGraphics 這個 method 說

     我的平台式 windows mobile ,可是我查過 .Net CF 也支援這個method啊

     還有請問一下  那個handle的觀念要去哪裡看才會知道啊??

    2006年11月15日 上午 05:12
  • 當程式執行到下面時

    Graphics g = textBox1.CreateGraphics();  

    就會丟出一個exception 不知道是哪裡發生問題

    而且當我使用VS2005 輸入 textBox1. 的時候會出現許多屬性與method

    但是就是找不到CreateGraphics這個method

    但是查MSDN這個CreateGraphics也是支援 .NET CF的啊

    有人知道為什麼??

    2006年11月15日 下午 02:31
  • 不可能八...怎麼可能沒有CreateGraphics
    而且也不一定要用textbox的CreateGraphics、隨便哪個都可以
    重點是 MeasureString(textBox1.Text、textBox1.Font); 當中的參數

    例如
                Graphics g = this.CreateGraphics();
                SizeF n = g.MeasureString(textBox1.Text, textBox1.Font);
                System.Diagnostics.Debug.WriteLine(n.Height);

    2006年11月15日 下午 05:43
  • 恩 我查詢過許多論壇

    在智慧型裝置這邊確實無法使用CreateGraphics

    看來我要迂迴處理了!

    2006年11月16日 上午 03:04
  • =,,= 原來你是用在在智慧型裝置...我沒看到
    2006年11月16日 上午 04:14