Pergunta

Quando eu desenhar uma cadeia de caracteres em um buffer, a saída resultante não é anti-alias do jeito que eu esperaria. Este código ilustra o problema ... basta colocar isso em Form1.cs de um projeto de dispositivo inteligente padrão:

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

Por outro lado, se eu só puxar a corda para o objeto Graphics que foi passado com o PaintEventArgs, ele processa em ClearType, assim como eu esperaria.

Eu acho que eu tenho que criar tampão meus gráficos de uma forma que torna utilizar a suavização de fontes, mas eu não vejo uma maneira de fazer isso.

Foi útil?

Solução

acaba por ter sido um problema simples. Ao remover a PixelFormat.Format32bppRgb ele funcionou bem. Parece que você precisa ter certeza de seus buffers têm os formatos mesmo pixel ...

Outras dicas

Defina a propriedade SmoothingMode do seu objeto Graphics:

g.SmoothingMode = SmoothingMode.AntiAlias;

Você terá que usar gdiplus.dll (existe alguns wrappers para isso), mas só está disponível em Windows Mobile 6 Professional (não padrão).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top