Graphics.SmoothingMode的奇怪行为

时间:2018-01-29 14:46:23

标签: c# graphics antialiasing

我创建了Bitmap并在其上绘制了一个简单的stringRectangle。此外,我将graphics的{​​{1}}设置为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); } 区域内的所有图形。在这个区域之外抽出的Rectangles没有得到抗锯齿,我想知道为什么。这是一个错误还是我该如何解决?

enter image description here

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为你正在一个尚未初始化的区域上绘制文本 - 所以没有用于抗锯齿的背景颜色 - 它将它视为透明(尽管背景确实是白色的,如你所见)。

您可以在完成剩余的绘图之前立即调用graphics.Clear(Color.White);来轻松解决此问题。

然后会出现反锯齿,如下:

enter image description here