Graphics.DrawBeziers 方法

Graphics.DrawBeziers 方法 (Pen, Point[])
用 Point 结构数组绘制一系列贝塞尔样条。

命名空间:System.Drawing
程序集:System.Drawing(在 system.drawing.dll 中)

语法

C#
public void DrawBeziers (
    Pen pen,
    Point[] points
)

C++
public:
void DrawBeziers (
    Pen^ pen,
    array<Point>^ points
)

 

参数
pen
Pen,它确定曲线的颜色、宽度和样式。

points
Point 结构的数组,这些结构表示确定曲线的点。

异常

异常类型 条件
ArgumentNullException
 pen 为 空引用(在 Visual Basic 中为 Nothing)。

- 或 -

points 为 空引用(在 Visual Basic 中为 Nothing)。
 

备注

第一个贝塞尔样条是从点数组中的第一个点到第四个点绘制成的。第二个点和第三个点是确定曲线形状的控制点。每条后续曲线只需要三个点:两个控制点和一个结束点。前一条曲线的结束点用作后一条曲线的起始点。

示例

下面的代码示例设计为与 Windows 窗体一起使用,它需要 PaintEventArgse,即 Paint 事件处理程序的一个参数。代码执行下列操作:

创建黑色钢笔。

为第一条曲线创建起始点、结束点和两个控制点;为第二条曲线创建结束点和两个控制点。

将连续的贝塞尔曲线绘制到屏幕。 

C#
public void DrawBeziersPoint(PaintEventArgs e)
{
    // Create pen.
    Pen blackPen = new Pen(Color.Black, 3);
            
    // Create points for curve.
    Point start = new Point(100, 100);
    Point control1 = new Point(200, 10);
    Point control2 = new Point(350, 50);
    Point end1 = new Point(500, 100);
    Point control3 = new Point(600, 150);
    Point control4 = new Point(650, 250);
    Point end2 = new Point(500, 300);
    Point[] bezierPoints =
             {
                 start, control1, control2, end1,
                 control3, control4, end2
             };
            
    // Draw arc to screen.
    e.Graphics.DrawBeziers(blackPen, bezierPoints);
}

C++
public:
   void DrawBeziersPoint( PaintEventArgs^ e )
   {
      // Create pen.
      Pen^ blackPen = gcnew Pen( Color::Black,3.0f );

      // Create points for curve.
      Point start = Point(100,100);
      Point control1 = Point(200,10);
      Point control2 = Point(350,50);
      Point end1 = Point(500,100);
      Point control3 = Point(600,150);
      Point control4 = Point(650,250);
      Point end2 = Point(500,300);
      array<Point>^ bezierPoints = {start,control1,control2,end1,control3,control4,end2};

      // Draw arc to screen.
      e->Graphics->DrawBeziers( blackPen, bezierPoints );
   }

 

Graphics.DrawBeziers 方法 (Pen, PointF[])
用 PointF 结构数组绘制一系列贝塞尔样条。

命名空间:System.Drawing
程序集:System.Drawing(在 system.drawing.dll 中)

语法

C#
public void DrawBeziers (
    Pen pen,
    PointF[] points
)

C++
public:
void DrawBeziers (
    Pen^ pen,
    array<PointF>^ points
)


参数
pen
Pen,它确定曲线的颜色、宽度和样式。

points
PointF 结构的数组,这些结构表示确定曲线的点。

异常

异常类型 条件
ArgumentNullException
 pen 为 空引用(在 Visual Basic 中为 Nothing)。

- 或 -

points 为 空引用(在 Visual Basic 中为 Nothing)。
 

备注

第一个贝塞尔曲线是从点数组中的第一个点到第四个点绘制成的。第二个点和第三个点是确定曲线形状的控制点。每条后续曲线只需要三个点:两个控制点和一个结束点。前一条曲线的结束点用作后一条曲线的起始点。

示例

下面的代码示例设计为与 Windows 窗体一起使用,它需要 PaintEventArgse,即 Paint 事件处理程序的一个参数。代码执行下列操作:

创建黑色钢笔。

为第一条曲线创建起始点、结束点和两个控制点;为第二条曲线创建结束点和两个控制点。

将连续的贝塞尔曲线绘制到屏幕。


C# 复制代码
public void DrawBeziersPointF(PaintEventArgs e)
{
    // Create pen.
    Pen blackPen = new Pen(Color.Black, 3);
            
    // Create points for curve.
    PointF start = new PointF(100.0F, 100.0F);
    PointF control1 = new PointF(200.0F, 10.0F);
    PointF control2 = new PointF(350.0F, 50.0F);
    PointF end1 = new PointF(500.0F, 100.0F);
    PointF control3 = new PointF(600.0F, 150.0F);
    PointF control4 = new PointF(650.0F, 250.0F);
    PointF end2 = new PointF(500.0F, 300.0F);
    PointF[] bezierPoints = { start, control1, control2, end1,
         control3, control4, end2 };     
                
    // Draw arc to screen.
    e.Graphics.DrawBeziers(blackPen, bezierPoints);
}

C++ 复制代码
public:
   void DrawBeziersPointF( PaintEventArgs^ e )
   {
      // Create pen.
      Pen^ blackPen = gcnew Pen( Color::Black,3.0f );

      // Create points for curve.
      PointF start = PointF(100.0F,100.0F);
      PointF control1 = PointF(200.0F,10.0F);
      PointF control2 = PointF(350.0F,50.0F);
      PointF end1 = PointF(500.0F,100.0F);
      PointF control3 = PointF(600.0F,150.0F);
      PointF control4 = PointF(650.0F,250.0F);
      PointF end2 = PointF(500.0F,300.0F);
      array<PointF>^ bezierPoints = {start,control1,control2,end1,control3,control4,end2};

      // Draw arc to screen.
      e->Graphics->DrawBeziers( blackPen, bezierPoints );
   }

   
第一个贝塞尔样条是从点数组中的第一个点到第四个点绘制成的。第二个点和第三个点是确定曲线形状的控制点。每条后续曲线只需要三个点:两个控制点和一个结束点。前一条曲线的结束点用作后一条曲线的起始点。
也就是说,可以画4 、7、10、13、...... 1 + n*3,个点,每格三个点可以画一次,如果选取8个点或9个点就不符合规则,不会形成贝塞尔曲线,而且贝塞尔曲线会根据首个控制点的改变而发生整体改变的效果。

posted @ 2007-11-20 17:53  chinaifne  阅读(2814)  评论(0编辑  收藏  举报