ASP.NET 画图与图像处理-关于 Rectangle 和 Path 边框问题

作者:vkvi 来源:ITPOW(原创) 日期:2007-8-30

它们虽然无边框,但在调用 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 有点交错,但不完全重合也不完全分离。

相关文章