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+ 編程之繪圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM