实施例: 我想绘制一个中心点(10,10)和边缘20的正方形。
如何使用Graphics.DrawRectangle?
答案 0 :(得分:1)
Graphics.DrawRectangle没有重载将中心点作为参数并在其周围绘制一个矩形。看到这个
我认为您可以创建自己的功能,如下所示:
public void DrawRectangle(Pen pen, int xCenter, int yCenter, int width, int height)
{
//Find the x-coordinate of the upper-left corner of the rectangle to draw.
int x = xCenter - width / 2;
//Find y-coordinate of the upper-left corner of the rectangle to draw.
int y = yCenter - height / 2;
Graphics.DrawRectangle(pen, x, y, width, height);
}
答案 1 :(得分:0)
您有两种选择:
1 - 只需移动图纸即可。如果要绘制一个20x20像素,中心位于10,10,则将其绘制为0,0(中心 - 大小/ 2)
2 - 使用TranslateTransform函数将Graphics原点替换为-Size / 2
如果使用第二种方法,请记得在绘图后重置变换,但我建议使用第一个选项。
答案 2 :(得分:0)
您可以创建扩展方法:
public static class Utilities{
public static void DrawSquare(this Graphics g, Point center, int edgeSize, Pen pen){
int halfEdge = edgeSize/2;
Rectangle square = new Rectangle(center.X - halfEdge, center.Y - halfEdge, edgeSize, edgeSize);
g.DrawRectangle(pen, square);
}
}
然后使用它:
e.Graphics.DrawSquare(new Point(10, 10), 20, new Pen(Brushes.Blue));