贝塞尔曲线gdi


1.画贝塞尔曲线
DrawBezier(Pen pen, Point pt1, Point pt2, Point pt3, Point pt4)
DrawBezier(Pen pen, PointF pt1, PointF pt2, PointF pt3, PointF pt4)
DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
DrawBeziers(Pen pen, Point[] points)
DrawBeziers(Pen pen, PointF[] points)
复制代码
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //创建画板从Paint事件中的直接引用Graphics对象
            Graphics graphics = e.Graphics;
            graphics.Clear(Color.Black);

            //定义画笔
            Pen pen = new Pen(Color.White, 3.0f);

            Point p1 = new Point(100, 100);
            Point p2 = new Point(200, 400);
            Point p3 = new Point(400, 400);
            Point p4 = new Point(500, 100);

            graphics.DrawBezier(pen, p1, p2, p3, p4);
        }
2. 绘制曲线
复制代码
        DrawCurve(Pen pen, Point[] points)
        DrawCurve(Pen pen, PointF[] points)
        
        //tension:大于或等于 0.0F 的值,该值指定曲线的张力。
        DrawCurve(Pen pen, Point[] points, float tension)
        DrawCurve(Pen pen, PointF[] points, float tension)

        //offset:从 points 参数数组中的第一个元素到曲线中起始点的偏移量。
        //numberOfSegments: 起始点之后要包含在曲线中的段数。
        DrawCurve(Pen pen, PointF[] points, int offset, int numberOfSegments)
        DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
        DrawCurve(Pen pen, PointF[] points, int offset, int numberOfSegments, float tension)
复制代码
复制代码
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //创建画板从Paint事件中的直接引用Graphics对象
            Graphics graphics = e.Graphics;
            graphics.Clear(Color.Black);

            //定义画笔
            Pen pen = new Pen(Color.White, 3.0f);

            //定义点坐标
            Point[] points = { 
                         new Point(50,50),
                         new Point(100,25),
                         new Point(200,5),
                         new Point(250,50),
                         new Point(300,100),
                         new Point(350,200),
                         new Point(250,250)
                     };
            graphics.DrawCurve(pen, points, 0.5f);
        }
复制代码

     第三个参数是张力(平滑度),如果等于0.0的话就是线段了,相当于DrawLines,越接近1.0越光滑。如果大于1.0的出现异常结果。


3.画封闭曲线
复制代码
DrawClosedCurve(Pen pen, Point[] points)
DrawClosedCurve(Pen pen, PointF[] points)

//tension:大于或等于 0.0F 的值,该值指定曲线的张力。
//fillmode:System.Drawing.Drawing2D.FillMode 枚举的成员,它确定填充曲线的方式。需要此参数但被忽略。
DrawClosedCurve(Pen pen, Point[] points, float tension, FillMode fillmode)
DrawClosedCurve(Pen pen, PointF[] points, float tension, FillMode fillmode)
复制代码
复制代码
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //创建画板从Paint事件中的直接引用Graphics对象
            Graphics graphics = e.Graphics;
            graphics.Clear(Color.Black);

            //定义画笔
            Pen pen = new Pen(Color.White, 3.0f);

            //定义点坐标
            Point[] points = { 
                         new Point(50,50),
                         new Point(100,25),
                         new Point(200,5),
                         new Point(250,50),
                         new Point(300,100),
                         new Point(350,200),
                         new Point(250,250)
                     };
            graphics.DrawClosedCurve(pen, points);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,我们可以使用GDI+绘制贝塞尔曲线,具体步骤如下: 1. 创建Graphics对象 首先,我们需要创建一个Graphics对象,用于绘制贝塞尔曲线。可以使用下面的代码创建一个Graphics对象: ``` Graphics g = this.CreateGraphics(); ``` 2. 创建Pen对象 接下来,我们需要创建一个Pen对象,用于绘制曲线。可以使用下面的代码创建一个Pen对象: ``` Pen pen = new Pen(Color.Black); ``` 其中,Color.Black表示线条的颜色,可以根据需要进行修改。 3. 绘制曲线 接下来,我们可以使用GDI+提供的DrawBezier方法绘制贝塞尔曲线。该方法需要四个点作为参数,分别表示起点、终点和两个控制点。可以使用下面的代码绘制曲线: ``` Point startPoint = new Point(50, 50); Point endPoint = new Point(200, 200); Point controlPoint1 = new Point(50, 200); Point controlPoint2 = new Point(200, 50); g.DrawBezier(pen, startPoint, controlPoint1, controlPoint2, endPoint); ``` 在上面的代码中,我们使用了四个点来绘制贝塞尔曲线。其中,起点为(50,50),终点为(200,200),控制点1为(50,200),控制点2为(200,50)。 4. 释放资源 最后,我们需要释放创建的Graphics和Pen对象,可以使用下面的代码释放资源: ``` g.Dispose(); pen.Dispose(); ``` 完整的绘制贝塞尔曲线的代码如下: ``` private void Form1_Paint(object sender, PaintEventArgs e) { // 创建Graphics对象 Graphics g = this.CreateGraphics(); // 创建Pen对象 Pen pen = new Pen(Color.Black); // 绘制曲线 Point startPoint = new Point(50, 50); Point endPoint = new Point(200, 200); Point controlPoint1 = new Point(50, 200); Point controlPoint2 = new Point(200, 50); g.DrawBezier(pen, startPoint, controlPoint1, controlPoint2, endPoint); // 释放资源 g.Dispose(); pen.Dispose(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值