c#画一条直线
c# draw a straight line
如何使用 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);
}
}
}
您必须关闭 AntiAlias 才能绘制像素完美线条。
gObject.SmothingMode = SmoothingMode.None;
不要忘记将它放回 Default
之后,这样您就不会更改图像渲染或其他需要抗锯齿才能看起来不错的东西
你看到的直线其实是个把戏。它是 "smoothed",因此锯齿状部分被阴影像素包围(见下文)。这解释了如何比我做得更好。
https://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx
下图相同。顶部只是放大了。
如何使用 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);
}
}
}
您必须关闭 AntiAlias 才能绘制像素完美线条。
gObject.SmothingMode = SmoothingMode.None;
不要忘记将它放回 Default
之后,这样您就不会更改图像渲染或其他需要抗锯齿才能看起来不错的东西
你看到的直线其实是个把戏。它是 "smoothed",因此锯齿状部分被阴影像素包围(见下文)。这解释了如何比我做得更好。
https://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx
下图相同。顶部只是放大了。