L. *_*rdt 2 c# graphics antialiasing
我创建了一个Bitmap并在其上绘制了一个简单的string和Rectangle。此外,我graphics设置SmoothingMode为AntiAlias。
orgBitmap = new Bitmap(250, 250);
using (Graphics graphics = Graphics.FromImage(orgBitmap))
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle rect = new Rectangle(30, 30, 150, 200);
graphics.FillRectangle(Brushes.Red, rect);
using (Pen pen = new Pen(Color.Green, 5))
{
graphics.DrawRectangle(pen, rect);
}
graphics.DrawString("Test Test Test Test", new Font("Arial", 20, FontStyle.Regular), Brushes.Black, 35, 35);
}
Run Code Online (Sandbox Code Playgroud)
这显示了一些意外的行为,因为并非所有图形都已消除锯齿。不知何故,抗锯齿仅限于位于 的区域中的所有图形Rectangles。在该区域之外绘制的内容string没有进行抗锯齿处理,我想知道为什么。这是一个错误还是我该如何修复它?
发生这种情况是因为您在尚未初始化的区域上绘制文本 - 因此没有可用于抗锯齿的背景颜色 - 它将其视为透明(尽管背景确实显示为白色,如您所见)。
graphics.Clear(Color.White);您可以通过在进行其余绘图之前立即调用来轻松解决此问题。
然后它会消除锯齿,如下所示: