中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

AGG第十六課agg::path_storage路徑存儲器

7.1 內置函數參數說明以及分析

    path storage 是用來管理路徑、畫復雜圖形的。在上面可以任意添加直線、曲線、其他路徑。

成都創新互聯長期為上千客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為莆田企業提供專業的成都做網站、成都網站制作,莆田網站改版等技術服務。擁有十余年豐富建站經驗和眾多成功案例,為您定制開發。

頭文件

#include <agg_path_storage.h>

類型定義

typedef path_base<vertex_block_storage<double> > path_storage;

基本成員函數

move_to()

    添加命令為 path_cmd_move_to 的頂點,意為下一條線從這個點開始畫;

line_to()

    添加命令為 path_cmd_line_to 的頂點,意為畫線到這個點;

arc_to(double rx, double ry, double angle,bool large_arc_flag, bool sweep_flag, double x, double y)

    添加一條弧路徑,畫軸長為rx, ry,角度為angle,優/劣弧,順逆時針,終點在(x,y)。

curve3_to()

    添加貝塞爾曲線,參數為一個控制點和終點的坐標

curve4_to()

    添加貝塞爾曲線,參數為兩個控制點和終點的坐標

join_path()

    添加一個頂點源,即組合

vertex(unsigned idx, double* x, double* y)

last_vertex(double* x, double* y)

vertex(double* x, double* y)

    取頂點位置,前者為已知步驟,后兩者為順序或倒序獲取

modify_vertex()

modify_command()

修改步驟為idx的頂點坐標和命令

7.2 頂點源的屬性修改

1)根據橫坐標或者縱坐標進行翻轉

說明:flip_y可能出現的地方非常多,這是對Y軸進行翻轉的

       // Flip all vertices horizontally or vertically,

       // between x1 and x2, or between y1 and y2 respectively

       //--------------------------------------------------------------------

       void flip_x(double x1, double x2);

       void flip_y(double y1, double y2);

2)簡單例子對比

   ras.reset();

   agg::path_storage path;

   path.move_to(40,350);

   path.line_to(80,350);

   path.line_to(80,670);

   path.line_to(40,670);

   path.end_poly();

   path.flip_y(350,450);

   ras.add_path(path);

   agg::path_storage comparepath ;

   comparepath.move_to(140,350);

   comparepath.line_to(180,350);

   comparepath.line_to(180,670);

   comparepath.line_to(140,670);

   comparepath.end_poly();

   ras.add_path(comparepath);

   agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));

 

7.3線段繪制規則圖形

1)空心圖形

聲明:在MFC中繪制線段,簡單的使用MoveTo和LineTo搞定,但是使用AGG的path_storage必須通過agg::conv_stroke(顯示輪廓線),才能夠顯示線段。嘗試注釋agg::conv_stroke可以了解基本的操作流程。

ras.reset();

agg::path_storage ps;    

ps.move_to(200,200); 

ps.line_to(400,200);

ps.line_to(400,400);

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

2)實心圖形(攜帶填充顏色)

說明:需要描繪填充顏色的圖形,必須是閉合的,path_storage提供了幾個閉合的函數,可以試著替換。

   ras.reset();

   agg::path_storage ps;   

   ps.move_to(200,200);  

ps.line_to(400,200); 

ps.line_to(400,400);

ps.end_poly();

   ras.add_path(ps);

   agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));

ras.reset();

 

7.4 注意事項

       path_storage至少會分配一塊內存存儲256個頂點源,所以創建大量的path_storage是相當

昂貴的內存開銷,并且容易造成內存碎片。建議一個類持有一個靜態的成員,通過函數

remove_all清空所有的頂點源和start_new_path包含一條新的路徑,將多條路徑存儲在

一個對象中。如果希望創建一個包含很多頂點源的path_storage,最好使用vertex_block_storage。

如果希望創建很多個path_storage,但是包含很小的頂點源,最好使用vertex_stl_storage

適配器。


代碼說明

m_coord_blocks 保存坐標

m_cmd_blocks 保存坐標的指令


    template<class T, unsigned S, unsigned P>

    inline unsigned vertex_block_storage<T,S,P>::vertex(unsigned idx, 

                                                        double* x, double* y) const

    {

        unsigned nb = idx >> block_shift;

//一個塊block存儲256個端點源,通過idx>>8,獲取到第幾個分組

        const T* pv = m_coord_blocks[nb] + ((idx & block_mask) << 1);

//m_coord_blocks保存所有塊的頭指針,idx & 256 實際上取出是當前nb塊的第幾個位置,移位1是因為每一個端點源占用了

//兩個空間

        *x = pv[0];

        *y = pv[1];

        return m_cmd_blocks[nb][idx & block_mask];

    }

網站題目:AGG第十六課agg::path_storage路徑存儲器
文章鏈接:http://m.2m8n56k.cn/article18/jojigp.html

成都網站建設公司_創新互聯,為您提供定制網站品牌網站制作網站營銷全網營銷推廣動態網站軟件開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 亚洲综合色dddd26 | 国产一区在线免费观看 | 中文字幕一区二区小泽玛利亚 | 欧美区一区 | 精品伊人久久久久7777人 | 久久精彩视频 | 在线观看免费为成年视频 | 日韩美毛片| 欧美99| 99精品在线免费 | 欧美成人精品高清在线观看 | 99久久精品毛片免费播放 | 国产精品久久久久a影院 | 欧美特级视频 | 99国产国人青青视频在线观看 | 三级黄色毛片网站 | 白嫩美女一级毛片免费看 | 欧美毛片a级毛片免费观 | 国产精品一区伦免视频播放 | 欧美另类videosbestsex视频 | 亚洲图片视频在线观看 | 欧美成人激情在线 | 视频在线一区二区三区 | 欧美一二三区在线 | 2000xxxxav影院| 久久精品免观看国产成人 | 国产精品色午夜视频免费看 | 欧美午夜免费一级毛片 | 99久久国产免费中文无字幕 | 亚洲ay| 国产九九在线观看播放 | 激情欧美一区二区三区 | 国产成人黄网在线免 | 国产做a爰片久久毛片 | 亚洲天堂区 | 欧美一级特黄特色大片免费 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 国产成人精品福利站 | 日本一区二区三区免费视频 | 亚洲国产精品一区二区三区久久 | 韩国毛片在线观看 |