如何:填充开放图形

更新:2007 年 11 月

可通过将 GraphicsPath 对象传递给 FillPath 方法来填充轨迹。FillPath 方法根据当前为轨迹设置的填充模式(交替或缠绕)填充轨迹。如果轨迹包含任何非闭合图形,也会像这些图形是闭合图形一样来填充轨迹。GDI+ 通过绘制一条从图形终点到起点的直线来闭合图形。

示例

下面的示例创建包含一个非闭合图形(弧)和一个闭合式图形(椭圆)的轨迹。FillPath 方法按照默认的填充模式(即 Alternate)填充轨迹。

下面的插图显示示例代码的输出。请注意,如同用一条从开放式图形终点到起点的直线闭合了非闭合图形一样填充了轨迹(Alternate)。

填充开放路径

Dim path As New GraphicsPath()

' Add an open figure.
path.AddArc(0, 0, 150, 120, 30, 120)

' Add an intrinsically closed figure.
path.AddEllipse(50, 50, 50, 100)

Dim pen As New Pen(Color.FromArgb(128, 0, 0, 255), 5)
Dim brush As New SolidBrush(Color.Red)

' The fill mode is FillMode.Alternate by default.
e.Graphics.FillPath(brush, path)
e.Graphics.DrawPath(pen, path)

GraphicsPath path = new GraphicsPath();

// Add an open figure.
path.AddArc(0, 0, 150, 120, 30, 120);

// Add an intrinsically closed figure.
path.AddEllipse(50, 50, 50, 100);

Pen pen = new Pen(Color.FromArgb(128, 0, 0, 255), 5);
SolidBrush brush = new SolidBrush(Color.Red);

// The fill mode is FillMode.Alternate by default.
e.Graphics.FillPath(brush, path);
e.Graphics.DrawPath(pen, path);

编译代码

前面的示例是为使用 Windows 窗体而设计的,它需要 Paint 事件处理程序的参数 PaintEventArgse。

请参见

概念

GDI+ 中的图形路径

参考

GraphicsPath