• C# GDI+编程之剖析startAngle和sweepAngle


      以DrawArc为例,它有一种形式如下的构造函数

    public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle);

      对于startAngle和sweepAngle,MSDN对它的解释是

        startAngle: 从 x 轴到弧线的起始点沿顺时针方向度量的角(以度为单位)。

        sweepAngle:从 startAngle 参数到弧线的结束点沿顺时针方向度量的角(以度为单位)。

      可能博主理解力不怎么样,一直不明白X轴到弧线起始点应该怎么计算,后面查了一些资料才弄明白了,通过下面例子来具体剖析

      

    private void button1_Click(object sender, EventArgs e)
            {
                Graphics graphics = CreateGraphics();
                Pen myPen = new Pen(Color.Red);
                Pen pen1 = new Pen(Color.Green,3);
                Rectangle rec1 = new Rectangle(50,50, 100, 60);   
                graphics.DrawRectangle(myPen, rec1);    //绘制矩形
                graphics.DrawArc(pen1, rec1, 0, 90);    //绘制圆弧
            }

    当点击button1后,效果如下

    这是怎么来的呢?其实很简单,首先在矩形的中点建立一个坐标系,圆弧起点到中点的连线与X轴的夹角为startAngle,圆弧的起点、终点分别和rect定义的矩形的中点连线,两条线段之间夹角就是sweepAngle

     

    起点到O的连线与X轴的夹角为startAngle,终点到O的连线与起点到O的连线的夹角为sweepAngle。

    当角度取负值的时候,表示逆时针方向,否则都为顺时针方向,如将上例中的sweepAngle改成-90,即

    graphics.DrawArc(pen1, rec1, 0, -90);

    则结果如下

    如果对GDI+有兴趣,可以参阅我之前写的博客 GDI+ 编程之绘图

  • 相关阅读:
    谷粒商城心得(四)
    centos7设置rc.local开机执行命令
    密码学简介
    如何解决 kubernetes 重启后,启来不来的问题
    谷粒商城安装ES及入门(十六)
    谷粒商城读写分离(十五)
    谷粒商城创建mysql主从(十四)
    虚拟机LVM在线扩容
    Builder 模式初探
    Mysql 导入实战
  • 原文地址:https://www.cnblogs.com/forever-Ys/p/10457999.html
Copyright © 2020-2023  润新知