我需要使用C#在Windows窗体中创建一些简单的图形。简单来说,我的意思是线条,圆圈等。但是,当我绘制时,例如一个实心圆,边缘不平滑(正如使用方形像素绘制圆形时所预期的那样),但是当在矢量程序中绘制具有相同像素数的相同圆时,它看起来很完美。我在这个例子中一直在使用Inkscape。
也许矢量软件使用某种渲染功能来平滑颜色,但是这可能在C#中没有创建太多代码吗?以下是代码示例,它使用Graphics
创建要绘制的画布。
private void StatGraphicsPanel_Paint(object sender, PaintEventArgs e)
{
Graphics canvas = e.Graphics;
Brush brush = Brushes.Aqua;
canvas.FillEllipse(brush, 0, 0, 10, 10);
}
解决方案 这段代码可以解决问题:
private void StatGraphicsPanel_Paint(object sender, PaintEventArgs e)
{
Graphics canvas = e.Graphics;
canvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Brush brush = Brushes.Aqua;
canvas.FillEllipse(brush, 0, 0, 10, 10);
}
答案 0 :(得分:9)
您想使用System.Drawing.Graphics.SmoothingMode
属性。在开始使用Graphics
对象之前,请执行以下操作:
canvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
那应该给你一个很好的抗锯齿椭圆而不是默认的锯齿状椭圆。
同样,如果要在图像中绘制高质量文本,请使用System.Drawing.Graphics.TextRenderingHint
属性。
正如其他人在评论中提到的那样,您可能需要考虑使用WPF。 WinForms已过时。