Как использовать ClearType с двойной буферизацией в Compact Framework?

StackOverflow https://stackoverflow.com/questions/1187945

Вопрос

Когда я рисую строку в буфере, результирующий вывод не сглаживается так, как я ожидал.Этот код иллюстрирует проблему...просто поместите это в Form1.cs стандартного проекта смарт-устройства:

protected override void OnPaint(PaintEventArgs e)
{
  Bitmap buffer = new Bitmap(Width, Height, PixelFormat.Format32bppRgb);
  using(Graphics g = Graphics.FromImage(buffer))
  {
    g.Clear(Color.White);
    g.DrawString("Hello, World", Font, new SolidBrush(Color.Black), 5, 5);
  }
  e.Graphics.DrawImage(buffer, 0, 0);
}

С другой стороны, если я просто нарисую строку в объекте Graphics, переданном вместе с PaintEventArgs, он отображается в ClearType, как я и ожидал.

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

Это было полезно?

Решение

Оказывается, это была простая проблема.Удалив PixelFormat.Format32bppRgb все работало нормально.Похоже, вам нужно убедиться, что ваши буферы имеют одинаковые форматы пикселей...

Другие советы

Установите свойство SmoothingMode вашего объекта Graphics:

g.SmoothingMode = SmoothingMode.AntiAlias;

Вам придется использовать gdiplus.dll (для этого существует несколько оболочек), но он доступен только в Windows Mobile 6 Professional (не Standard).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top