中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

九寨沟县| 西乌珠穆沁旗| 莎车县| 天全县| 亚东县| 册亨县| 无为县| 青海省| 沂水县| 军事| 蓝山县| 无极县| 华容县| 交城县| 湖北省| 图木舒克市| 颍上县| 湖南省| 仁化县| 普安县| 上思县| 江油市| 华宁县| 鄂州市| 襄城县| 塔河县| 阿城市| 通道| 青铜峡市| 河源市| 周宁县| 武安市| 南充市| 河曲县| 红河县| 介休市| 和平县| 明星| 宁海县| 雷州市| 易门县|