当我将字符串绘制到缓冲区时,结果输出不会像我期望的那样消除锯齿。这段代码说明了这个问题......把它放在标准的智能设备项目的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);
}
另一方面,如果我只是将字符串绘制到使用PaintEventArgs
传入的Graphics对象中,它就像我期望的那样以ClearType呈现。
我想我必须以一种使用字体平滑的方式创建我的图形缓冲区,但我没有办法做到这一点。
答案 0 :(得分:3)
原来是一个简单的问题。删除PixelFormat.Format32bppRgb
它工作正常。看起来你需要确保你的缓冲区具有相同的像素格式...
答案 1 :(得分:0)
设置Graphics对象的SmoothingMode属性:
g.SmoothingMode = SmoothingMode.AntiAlias;
答案 2 :(得分:0)
您将不得不使用gdiplus.dll(此处存在一些包装),但它仅适用于Windows Mobile 6 Professional(非标准版)。