2013-03-07 2 views
-1

У меня есть TextBox в моей форме, и я рисую в нем строку, как показано ниже.Пользовательский текст чертежа C#

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)); 

Строка, отображаемая в текстовом поле. Затем я попытался под кодом

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?

ответ

0

Из-за этого:

Параметр gdiCharSet принимает значение из списка, определенного в заголовочном файле WinGDI.h Windows SDK. Приложения Windows Forms поддерживают шрифты TrueType и имеют ограниченную поддержку шрифтов OpenType. Если параметр familyName указывает шрифт, который не установлен на компьютере, на котором запущено приложение или не поддерживается, будет заменен Microsoft Sans Serif.

(From the MSDN documentation)

Поскольку Arial является TrueType шрифтов и поддерживает Unicode, вы не должны быть настройки GDI Char Set, насколько я знаю.

Смежные вопросы