您好,登錄后才能下訂單哦!
定義文件:include/agg_arc.h
類函數構造器:
arc(double x, double y, double rx, double ry, double a1,double a2, bool ccw=true)
圓心為(x, y)和長短半軸分別為rx, ry,初始角度和終結角度為a1, a2
范圍是0<a1<a2<6.28(2pi) pi = 3.141592653 ccw是true是順時針,false是逆時針
注意:不是平常使用的角度180,360,而是弧度,否則出錯
繪制一個圓心(400,100),長短半軸都是100的圓弧,初始角度是0,終結角度是3.14,折算成角度是180度。可以使用agg::deg2rad(90)將角度轉換成弧度。
代碼如下:
agg::arc arc(400, 100, 100, 100, 0, 3.14,false);
agg::conv_stroke<agg::arc>stroke(arc);
ras.add_path(stroke); agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));
分析:可以調整最后一個參數,修改成true,查看效果!!
agg::arc arc(400, 100, 100, 100, 0, 3.14/3,true);
agg::path_storage path;
path.move_to(400,100);
path.concat_path(arc);
path.line_to(400,100);//連接回到圓心
path.end_poly();//重新閉合
ras.add_path(path);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));
我們可以不使用end_poly函數進行閉合,而是獲取弧線的開始頂點,然后閉合。
agg::arc arc(400, 100, 100, 100, 0, 3.14/3,true);
agg::path_storage path;
path.move_to(400,100);
path.concat_path(arc);//連接頂點源
path.line_to(400,100);//連接回到圓心
arc.rewind(0);
double x;
double y;
arc.vertex(&x,&y);
path.line_to(x,y);//從圓心連接到開始頂點源
ras.add_path(path);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));
從這個例子,我們可以了解兩點:
1如何獲取其他頂點源的起點,當然結束點可以通過遍歷獲得
2 如何與agg::path_storage配合使用,快速的繪制圖形。
agg::path_storage類提供如下的函數
arc_to(double rx, double ry, double angle,bool large_arc_flag, bool sweep_flag, double x, double y)
添加一條弧路徑,畫軸長為rx, ry,角度為angle,優/劣弧,順逆時針,終點在(x,y)。
但是不了解長短半軸,不知道角度,優劣弧,順逆時針等等,都了解,但是就是畫不了!!
測試例子1:
//完全沒有繪制圖形
agg::path_storage ps;
ps.arc_to(10,10,agg::deg2rad(90),true,false,160,100);
agg::conv_stroke<agg::path_storage>stroke(ps);
ras.add_path(stroke);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));
測試例子2:
//繪制的圖形太難理解,move_to到開始繪制點,然后順時針繪制半圓
agg::path_storage ps;
ps.move_to(320,160);
ps.arc_to(80,10,6.28,true,true,160,160);
agg::conv_stroke<agg::path_storage> stroke(ps);
ras.add_path(stroke);
agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));
ras.reset();
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。