GraphicsPath::IsOutlineVisible (constPointF&,constPen*,constGraphics*) 方法 (gdipluspath.h)

GraphicsPath::IsOutlineVisible 方法确定当路径由指定的 Graphics 对象和指定的笔绘制时,指定的点是否接触此路径的轮廓。

语法

BOOL IsOutlineVisible(
  const PointF & point,
  const Pen      *pen,
  const Graphics *g
);

参数

point

对要测试的点的引用。

pen

指向 Pen 对象的指针。 此方法确定测试点是否接触将由此笔绘制的路径轮廓。 与用窄笔绘制的轮廓相比,更多的点将触摸由宽笔绘制的轮廓。

g

可选。 指向指定世界到设备转换 的 Graphics 对象的指针。 如果此参数的值为 NULL,则测试在世界坐标中完成;否则,测试在设备坐标中完成。 默认值为 NULL。

返回值

如果测试点触及此路径的轮廓,则此方法返回 TRUE;否则返回 FALSE

注解

示例

以下示例创建一个椭圆形路径,并使用宽黄色笔绘制该路径。 然后,代码测试数组中的每个点,以查看该点是否与轮廓 (接触,因为它将由路径的宽黄色笔) 绘制。 接触轮廓的点将绘制为绿色,不接触轮廓的点被涂成红色。

VOID Example_IsOutlineVisibleExample(HDC hdc)
{
   Graphics graphics(hdc);

   INT j;
   Pen yellowPen(Color(255, 255, 255, 0), 20);
   SolidBrush brush(Color(255, 255, 0,  0));

   // Create and draw a path.
   GraphicsPath path;
   path.AddEllipse(50, 50, 200, 100);
   graphics.DrawPath(&yellowPen, &path);

   // Create an array of three points, and determine whether each
   // point in the array touches the outline of the path.
   // If a point touches the outline, paint it green.
   // If a point does not touch the outline, paint it red.
   PointF[] = {
      PointF(230, 138),
      PointF(100, 120),
      PointF(150, 170)};

   for(j = 0; j <= 2; ++j)
   {
      if(path.IsOutlineVisible(points[j], &yellowPen, NULL))
         brush.SetColor(Color(255, 0, 255,  0));
      else
         brush.SetColor(Color(255, 255, 0,  0));

      graphics.FillEllipse(&brush, points[j].X - 3.0f, points[j].Y - 3.0f, 6.0f, 6.0f);
   }
}

Color(255, 255, 0,  0)Color(255, 255, 0,  0)

要求

   
标头 gdipluspath.h

另请参阅

使用区域进行剪裁

构造并绘制轨迹

创建路径渐变

显卡

GraphicsPath

IsOutlineVisible 方法

IsVisible 方法

路径

笔、线条和矩形

PointF

设置笔宽度和对齐方式