0

我需要使用 C# 在 Windows 窗体中创建一些简单的图形。简单我的意思是线、圆等。但是,当我画一个实心圆时,边缘不是平滑的(正如使用方形像素绘制圆时所预期的那样),但是当在 a 中绘制具有相同像素数的同一个圆时它看起来很完美的矢量程序。为了这个例子,我一直在 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);
}
4

1 回答 1

11

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

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

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

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


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

于 2013-06-20T20:31:04.670 回答