亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AGG第十三課 agg::arc 渲染弧線和扇形

發布時間:2020-07-16 11:10:26 來源:網絡 閱讀:1021 作者:fengyuzaitu 欄目:系統運維

構造函數參數說明

定義文件: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,而是弧度,否則出錯

例子

2.1 繪制弧線

繪制一個圓心(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,查看效果!!

2.2 繪制扇形

1代碼如下:

    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));

2代碼如下:

我們可以不使用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如何獲取其他頂點源的起點,當然結束點可以通過遍歷獲得

如何與agg::path_storage配合使用,快速的繪制圖形。

3 agg::path_storagearc_to疑惑

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();


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲松县| 盘山县| 定远县| 大港区| 四平市| 客服| 元阳县| 通城县| 玉山县| 哈尔滨市| 蒲城县| 九江县| 三穗县| 偏关县| 祁东县| 报价| 太仓市| 星子县| 红安县| 郁南县| 宽城| 乡宁县| 闽侯县| 龙南县| 梓潼县| 仁怀市| 四川省| 清镇市| 凤山县| 神农架林区| 永城市| 南陵县| 凤城市| 玛曲县| 台山市| 横峰县| 奇台县| 高州市| 收藏| 重庆市| 瑞金市|