日期:2014-05-18  浏览次数:20976 次

如何获取xp系统默认字体
我要算一个窗体的Title的宽度,所以需要知道该Title的默认字体,也就是XP系统的默认字体,这个该如何获取?

  求解。。。

 非 “System.Drawing.SystemFonts.DefaultFont”

------解决方案--------------------
这个需要你了解GDI方面的知识。系统默认字体是GDI的内置对象,可以通过GetStockObject(DEFAULT_GUI_FONT) 获得。

MSDN有一篇文章,应该对你有所帮助:如何:在 Windows 窗体应用程序中响应字体方案更改
------解决方案--------------------
C# code

得到系统默认字体 
  private   FontFamily[]   fontFamilys; 

                private   void   GetFontFamilies() 
                { 
                        Graphics   g   =   this.CreateGraphics(); 
                        fontFamilys   =   FontFamily.GetFamilies(g); 
                        for   (int   i   =   0;   i   <   fontFamilys.Length;   i++) 
                        { 
                                cbxFont.Items.Add(fontFamilys[i].Name); 
                        } 
                }

------解决方案--------------------
C# code

// 通过注册表获取系统默认字体  
string DefaultFontFaceName = (string)Microsoft.Win32.Registry.GetValue(@'HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/GRE_Initialize', 'GUIFont.Facename', 'SimSun');

------解决方案--------------------
这是win32的api
用法类似:
[DllImport("User32.dll")]

private static extern IntPtr GetWindowDC(IntPtr hwnd);
你要查msdn,看GetStockObject是那个dll的,参数如何
探讨

GetStockObject(DEFAULT_GUI_FONT)
这个是如何调用的啊? 我把命名空间应用过来了,但是调用不了,急。。。

------解决方案--------------------
授人以渔。作为程序员,有一点探索欲是很好的。