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+ 编程之绘图

 

转载于:https://www.cnblogs.com/forever-Ys/p/10457999.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值