C#窗口形式的漂亮图形

时间:2013-06-20 20:16:51

标签: c# graphics

我需要使用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);
}

1 个答案:

答案 0 :(得分:9)

您想使用System.Drawing.Graphics.SmoothingMode属性。在开始使用Graphics对象之前,请执行以下操作:

canvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

那应该给你一个很好的抗锯齿椭圆而不是默认的锯齿状椭圆。

同样,如果要在图像中绘制高质量文本,请使用System.Drawing.Graphics.TextRenderingHint属性。


正如其他人在评论中提到的那样,您可能需要考虑使用WPF。 WinForms已过时。