Почему строки Windows Forms выглядят так некрасиво, когда сглаживаются? - PullRequest
5 голосов
/ 13 октября 2009

Я рендерил некоторые строки вручную поверх GraphicsBox, потому что у вас не может быть метки с прозрачным фоном.

Независимо от того, какой режим рендеринга я пробую, я не могу заставить строки выглядеть хорошо (то есть, как они будут выглядеть в Word или в графической программе.

Вот изображение макета интерфейса по сравнению с тем, что отображается на экране: enter image description here

К сожалению, StackOverflow, кажется, уменьшает картинку, поэтому здесь также есть прямая ссылка: http://i.stack.imgur.com/vYFaF.png

А вот код, используемый для рендеринга:

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
  Graphics labelDrawing = e.Graphics;
  labelDrawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;

  labelDrawing.DrawString("Setup Progress", new Font("Calibri", 10, FontStyle.Bold, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(12, 9));
  labelDrawing.DrawString("The following components are being configured.", new Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(24, 27));
}

Я пытался изменить TextRenderingHint для каждой опции по очереди, но независимо от того, что я пробую, если есть какое-либо сглаживание, оно получается размытым, смазанным, как на скриншоте. Есть идеи?

1 Ответ

2 голосов
/ 13 октября 2009

Вы можете иметь прозрачные метки в .NET.
Прочтите эту статью о CodeProject на Как использовать прозрачные изображения и метки в Windows Forms

Что касается проблемы с рисованием Calibri не имеет собственного размера шрифта 10. Вы можете проверить это в Панели управления-> Шрифты. Наименьший размер родного шрифта составляет 12 (по крайней мере, на моей машине). Измените размер от 12 до 12, и вы увидите, что это намного лучше.

Если вы не используете собственные размеры шрифта где-то под капотом, Windows / .NET / GDI + будет пытаться масштабировать шрифт для вас. Это масштабирование, скорее всего, вызывает вашу проблему.

...