码迷,mamicode.com
首页 > 其他好文 > 详细

agg::ellipse画圆(扩展)

时间:2015-11-20 20:06:11      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:agg conv_dash agg::trans_affine

引言:在刚开始的时候对agg::conv_stroke不了解,认为她与agg::conv_dash是一路的货色,并且分别代表实线和虚线,其实不然,agg::conv_stroke此类存储线的位置,宽度,线端点形状,线连接方式等信息  ,通过使用虚线渲染圆,充分理解了,她们之间如何配合使用。

小节一:虚线的使用方法

例子如下:

    //Vertex Source顶点源,我更喜欢称之为端点集合,或者点集合矩阵
    //第一个参数是圆形圆心的X坐标,第二个参数是圆形圆心的Y坐标
    //第三个参数是圆形的X半径,第四个参数是圆形的Y半径
    //根据第三和第四个参数可以了解到圆形可以是一个扁平的圆形,
    //不一定就是一个规规矩矩的圆形
    agg::ellipse ell(200,200,50,100);


    //使用虚线
    typedef agg::conv_dash<agg::ellipse> ell_cd_type;
    ell_cd_type cdccell(ell);
    cdccell.add_dash(5,5);


    typedef agg::conv_stroke<ell_cd_type> ell_cc_cs_type;
    ell_cc_cs_type csccell(cdccell);

    ras.add_path(csccell);
    rensl.color(agg::rgba8(255,0,0));
    agg::render_scanlines(ras,sl,rensl);

    ras.reset();

通过构建agg::conv_dash模板,然后创建给agg::conv_stroke实现了虚线的描绘。

小节二:放缩,偏移,旋转的转换

    //Vertex Source顶点源,我更喜欢称之为端点集合,或者点集合矩阵
    //第一个参数是圆形圆心的X坐标,第二个参数是圆形圆心的Y坐标
    //第三个参数是圆形的X半径,第四个参数是圆形的Y半径
    //根据第三和第四个参数可以了解到圆形可以是一个扁平的圆形,
    //不一定就是一个规规矩矩的圆形
    agg::ellipse ell(200,200,50,100);

    //坐标转换
    agg::trans_affine mtx;
    mtx.scale(0.5,1); //x轴缩小到原来的一半
    mtx.rotate(agg::deg2rad(30));//旋转30度
    mtx.translate(200,200);//X,Y坐标分别平移100
    typedef agg::conv_transform<agg::ellipse> ell_ct_type;
    ell_ct_type ctell(ell,mtx); //矩阵变换

    typedef agg::conv_dash<ell_ct_type> ell_cd_type;
    ell_cd_type cdccell(ctell);
    cdccell.add_dash(5,5);

    typedef agg::conv_stroke<ell_cd_type> ell_cc_cs_type;
    ell_cc_cs_type csccell(cdccell);

  摘自:http://www.cnblogs.com/CoolJie/archive/2011/04/27/2030122.html

在这个例子中,发现很多的文章引入:agg::conv_contour,事实上去掉该东西,对于渲染也没有任何的影响,从这里可以看出AGG是一个非常松散的渲染工具,她提供了很多的工具,但是你可以很简单的渲染,也可以进行一系列的转换。

    变换矩阵是一个非常不错的东西,核心是对坐标进行一系列的转换,实际上,当我们构建一个形状例如圆形,实际上AGG已经知道了所有形成的点坐标,然后对点的坐标进行操作。

注:trans_affine不 仅仅用于源顶点的变换,在AGG库中有不少地方都能看到它。比如后面会讲到的线段(span)生成器,通过变换矩阵,就能够 自由变换填充于多边形之内的图案。

agg::ellipse画圆(扩展)

标签:agg conv_dash agg::trans_affine

原文地址:http://linuxstorm.blog.51cto.com/5218690/1715172

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!