Как нарисовать Unicode строку с использованием C # graphics.DrawString - PullRequest
4 голосов
/ 07 ноября 2010

Я пытаюсь отправить строку кхмерского скрипта (Unicode) на принтер, используя PrintDocument, предоставляемый .NET Framework.

К сожалению, мне кажется, что Graphics.DrawString () неправильно отображает кхмерский скрипт.

Платформа: Windows 7 Ultimate
IDE: VS 2010 Ultimate

Вот пример кода:

void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
  var font = new Font("Khmer UI", 12);
  var text = "សួស្តី"; // "Hello"
  e.Graphics.DrawString(text, font, Brushes.Black, 100, 100);
}

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010

mann,
Я проверил ваш код на обработчике Form_Paint() и получил именно то, что вы сказали.
Но когда я использовал это вместо:

TextRenderer.DrawText(e.Graphics, text, font, new Point(100, 100), Color.Black);  

Это дало мненапишите так, как вы хотели.
Попробуйте это на вашем printDoc_PrintPage().

alt text

0 голосов
/ 10 ноября 2010

Спасибо Альбину и Бимеру за ваш активный ответ.

После нескольких сообщений в c # google group. Подтверждено, что в GDI + есть ошибка, которая неправильно отображает определенный сценарий (в данном случае «кхмерский») в другой формулировке.

Для проверки проблемы с GDI + DrawString () было создано собственное тестовое приложение win32.

Отчет об ошибке отправлен в Microsoft Connect: http://connect.microsoft.com/VisualStudio/feedback/details/620081/

...