自定义绘图文字C#

时间:2013-03-07 06:29:43

标签: c# fonts textbox customization

我的表单中有一个TextBox,我正在绘制一个字符串,如下所示。

Font myFont = new Font("Arial",18F,FontStyle.Regular,GraphicsUnit.Point,128);
Graphics g = myTextBox.CreateGraphics();
Brush b = new SolidBrush(Color.Red);
g.DrawString("Item Drawn with DrawString",myFont ,b,new PointF(1,1));

TextBox中显示的字符串。然后我尝试了下面的代码

 Font myFont = new Font("Arial",18F,FontStyle.Regular,GraphicsUnit.Point,128);
 Graphics g = myTextBox.CreateGraphics();
 TextRenderer.DrawText(g,"Item Drawn with DrawText",myFont,new Point(1,1),Color.Red);

问题来了。尽管两种方法g.DrawString()TextRenderer.DrawText()使用相同的字体,但字体样式有所不同。这是一些字符呈现不同。如果我在字体中使用“1”而不是“128”,则两种方法都会将字符呈现为唯一。

如果我在字体中更改GdiCharSet(128)值,则使用g.DrawString()方法时将无效。我的问题是为什么g.DrawString()方法会排除GdiCharSet值?

1 个答案:

答案 0 :(得分:0)

因此:

  

gdiCharSet参数从Windows SDK头文件WinGDI.h中定义的列表中获取值。 Windows窗体应用程序支持TrueType字体,并且对OpenType字体的支持有限。如果familyName参数指定运行应用程序的计算机上未安装的字体或不受支持,则将替换Microsoft Sans Serif。

From the MSDN documentation

由于Arial是TrueType字体并且它支持Unicode,因此我不应该设置GDI字符集,据我所知。