如何使用c#获得真正的直线?下面的代码绘制了一条线,很棒,但这条线并不完美,它不是逐像素的直线,是否有更好的代码可以产生更好,更准确的直线?
namespace Dimension3D
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void canvas_Paint(object sender, PaintEventArgs e)
{
Graphics gObject = canvas.CreateGraphics();
Brush red = new SolidBrush(Color.Red);
Pen redPen = new Pen(red, 8);
gObject.DrawLine(redPen, 10, 10, 35, 500);
}
}
}
答案 0 :(得分:0)
您必须关闭AntiAlias才能绘制完美的像素线。
gObject.SmothingMode = SmoothingMode.None;
不要忘记将其放回Default
,这样你就不会改变图像渲染或其他需要anitialias看起来不错的东西
答案 1 :(得分:0)
你所看到的直线实际上就是一招。它被“平滑”,因此锯齿状部分被阴影像素包围(见下文)。这解释了如何更好地做到这一点。
https://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx
下面的图片是相同的。顶部刚刚放大。