我正在尝试使用e.Graphics.DrawPolygon
(或 DrawLine)绘制一些多边形和线条。但是我在指定要绘制的坐标时遇到了一点问题。我正在PictureBox
使用它的 Paint 事件进行绘图。元素之间相对正确地绘制(创建所需的最终图片),但似乎总是在 PictureBox 的左上角绘制。在创建要绘制的点时,当我只是尝试乘以坐标时,它会在同一个地方绘制它但更大(乘以大小,而不是位置坐标)。这是我的代码:
//some for loop
{
//getting the coordinates
Point toAdd = new Point((int)xCoord, (int)yCoord); // creating the point from originaly a double, here i tried to multiply..
tmpPoints.Add(toAdd); // tmpPoints is a List<Point>
}
points.Add(tmpPoints.ToArray()); //List<Point[]>
drawBuffer = points; //saving to a public List<Point[]>
points.Clear();
this.Invalidate();
这里是 pictureBox1_Paint 方法的一部分:
for (int i = 0; i < drawBuffer.Count; i++)
{
//some other stuff like deciding which color to use, not very important
Brush br = new SolidBrush(polyColor);
e.Graphics.FillPolygon(br, drawBuffer[i]);
brush.Dispose();
}
我已经使用断点检查过,坐标是相同的比例(100 像素宽仍然是 100 像素宽),它们的坐标像 x 3000 和 y 1500,但它只是在左上角绘制自己。当我将坐标乘以 3 次(请参阅我乘以的地方的代码)时,它会在同一个地方绘制,但要大 3 倍(检查坐标后没有意义......)所以,我的问题是 - 如何我要正确设置位置,还是有其他方法可以做到这一点?像这样(我知道,这是废话,只是一个例子)
foreach(Polygon poly in e.Graphics)
{
poly.Location = new Point(poly.Location.X * 2, poly.Location.Y * 2);
}