它们虽然无边框,但在调用 Draw 和 Fill 方法时需要注意:
先说 Rectangle
假如一个 Rectangle 为 (1, 1, 2, 2),即起始位置为 (1, 1),宽度和高度都为 2。
Rectangle rect = new Rectangle(1, 1, 2, 2);
_graphics.FillRectangle(new SolidBrush(Color.Red), rect);
- 填充之后,效果为:(1, 1)、(1, 2)、(2, 1)、(2, 2) 这四个像素点,即矩形所覆盖的像素点都成了红色。
- 而如果是 DrawRectangle 呢?DrawRectangle 是画矩形的边框,上边框和左边框都是矩形的内边缘,即与 FillRectangle 的上方和左方重合,而下边框和右边框是矩形的外边缘,即比 FillRectangle 的下方和右方往外一个像素。
再说 Path
而 Path 和 Rectangle 恰好相反,如果有一个 Path,由四条线围成一个矩形。
- 那么 DrawPath 就是这四条线所在的位置。
- 而 FillPath 的上方和左方分别和 DrawPath 的上边框和左边框重合,但下方和右方要比 DrawPath 的下边框和右边框往内一个像素。
如果 Path 并不是矩形,而是不规则形状,特别是对于斜线、弧度这些部分,那 FillPath 是怎样呢?并没有拿到这方面的资料,不过据初步来看,似乎是与 DrawPath 有点交错,但不完全重合也不完全分离。