agg::trans_affine坐标转换

实例代码如下:

ras.reset();

agg::ellipse ell(400,400,20,70);

//坐标转换

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_stroke<ell_ct_type> ell_cc_cs_type;

ell_cc_cs_type csccell(ctell);

ras.add_path(csccell);

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

ras.reset();

这是网上最经典的一个使用例子,但是并没有说明旋转是如何实现的,稍微修改了一下代码:

mtx.rotate(agg::deg2rad(60));//旋转60度

发现界面上什么也没有,椭圆不见了!!至少应该推测到旋转的效果,否则谁敢用!!!

修改为40的时候,查看到图形移动到(73,848)附近,从网上没有找到

任何的资料。

时间: 2024-10-15 01:34:58

agg::trans_affine坐标转换的相关文章

AGG第十八课 agg::trans_affine仿射变换

1 affine仿射变换概念 在几何上定义为两个向量空间之间的一个仿射变换或者仿射映射(来自拉丁语,affinis,"和...相关")由一个线性变换接上一个平移组成. 2  agg::trans_affine成员函数说明 2.1 缩放 inline const trans_affine&trans_affine::scale(double x, double y) 参数一对x横坐标的缩放系数,参数二对y纵坐标的缩放系数 这里有一个问题:就是图形的缩放之后,并不是在原有的位置上,

agg::ellipse画圆(扩展)

引言:在刚开始的时候对agg::conv_stroke不了解,认为她与agg::conv_dash是一路的货色,并且分别代表实线和虚线,其实不然,agg::conv_stroke此类存储线的位置,宽度,线端点形状,线连接方式等信息  ,通过使用虚线渲染圆,充分理解了,她们之间如何配合使用. 小节一:虚线的使用方法 例子如下:     //Vertex Source顶点源,我更喜欢称之为端点集合,或者点集合矩阵     //第一个参数是圆形圆心的X坐标,第二个参数是圆形圆心的Y坐标     //第

(转)用AGG实现高质量图形输出(二)

本文上接<用AGG实现高质量图形输出(一)>,分别介绍了AGG显示流程中的各个环节. 上次讲了AGG的显示原理并举了一个简单的例子,这一篇文章开始讲AGG工作流程里的每个环节.为了方便对照,再放一次AGG显示流程 图 另外,上一篇文章里的例程也很重要,后面的例子都将基于这个代码. 下面,我们来考察AGG显示流程中的每个环节.理解每个环节最好的方法是编写实验代码,建议先参照这里建 立一个可以运行的AGG实验环境. 顶点源(Vertex Source) 顶点源是一种可以产生多边形所需要的“带命令的

AGG第二十一课 agg::conv_contour 扩展轮廓线

1前言 轮廓线就是图形的边界,任何封闭的顶点源跳过agg::conv_stroke阶段,将会描绘实心的图形,填充的颜色和边界保持一致.如果不封闭的顶点源一旦跳过agg::conv_stroke就什么也不绘制.agg::conv_stroke就是用来描绘图形边界的. 和agg::trans_affine对比可知,agg::conv_contour是扩展图形的轮廓线,通俗一点就是拓展图形的边界,对图形的边界进行放缩(但是和agg::trans_affine仿射变换不同,这是中心位置不变的缩放). 2

AGG函数参数使用的是弧度

2.1 定义 所谓"弧度的定义"就是说,1弧度的角大小是怎样规定的? 我们知道"度"的定义是,"两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度. 那么,弧度又是怎样定义的呢? 弧度的定义是:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧 摘自:http://sourceforge.net/p/vector-agg

agg::trans_viewport

> 1/ does the algorithm works only from0,0 to frame_width,frame_height ? > Is there a way to define a "worldcoordinate system" different than the > "renderer coordinate system"(let's say rendering lines bounded between > -1

AGG第六课 函数参数使用弧度

2.1 定义 所谓"弧度的定义"就是说,1弧度的角大小是怎样规定的? 我们知道"度"的定义是,"两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度. 那么,弧度又是怎样定义的呢? 弧度的定义是:两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧.当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧 摘自:http://sourceforge.net/p/vector-agg

AGG第四十一课 AGG和GDI渲染字体大小对比

如下是GDI渲染字体的代码: CClientDC dc(this); CPen pen(PS_SOLID,3,RGB(0,255,255)); CPen* pOldPen; pOldPen=dc.SelectObject (&pen); dc.SelectObject (&pOldPen); CFont font; CFont* pOLdFont = NULL; font.CreatePointFont(10,_T("System"),&dc); pOLdFon

AGG第四十三课 例子image1从椭圆到矩形替换问题

I am basing my code on the images1 example and I have changed the image 'partner' shape from an ellipse to a rectangle. The partner rectangle comes out at X,Y and scales and rotates, but the top left-hand corner of the image is always stuck at (x,y)=