我无法理解GDI+在表面上绘制线条的方式,可能它有一些算法来完成这个过程。
例如,让我们来看一个10x10像素的表面。
Bitmap img = new Bitmap(10, 10);
现在让我们在这个表面上画一条线,宽度为5px,顶部偏移量为5px。
using (var g = Graphics.FromImage(img))
{
g.Clear(Color.White);
var pen = new Pen(Color.Brown);
pen.Width = 5;
g.DrawLine(pen, 0F, 5F, 10F, 5F);
}
我们将得到:
![enter image description here](https://istack.dev59.com/eVqXW.webp)
我试图找到规律,得到了这个:
y = offset + width/2 - 1
其中y是真实起点y,offset是选择的起点y。
但有些情况下这种方法行不通。例如,假设宽度为6,选择的顶部偏移量为0,我们将得到y=2,并且会被绘制成这样:
它应该显示6个像素,但却没有。
因此,必须有更一般的算法来选择起始点,但我真的不知道它可以是什么。任何帮助都将不胜感激。