agg::conv_contour函数auto_detect_orientation作用

正如名称所言:自动检测方向,什么方向,可能很多人不了解,通过AGG邮件了解到几点:扩展轮廓线跟图形的绘制方向有关(也就是move_to,line_to,构成的图形的顺时针,还是逆时针)。如下的两个例子,一个是顺时针绘制矩形,一个是逆时针绘制矩形,然后扩展轮廓线。

例子1逆时针

agg::path_storage ps;

ps.move_to(395.5,200.5);

ps.line_to(295.5,200.5);

ps.line_to(295.5,210.5);

ps.line_to(395.5,210.5);

ps.close_polygon();

agg::conv_contour<agg::path_storage> contour(ps);

//contour.auto_detect_orientation(true);

contour.width(m_slider1.value());//获取滑动条的值

agg::conv_stroke<agg::conv_contour<agg::path_storage> >stroke(contour);

ras.add_path(stroke);

例子2 顺时针

agg::path_storage ps;

ps.move_to(395.5,200.5);

ps.line_to(395.5,210.5);

ps.line_to(295.5,210.5);

ps.line_to(295.5,200.5);

agg::conv_contour<agg::path_storage>contour(ps);

contour.width(m_slider1.value());

agg::conv_stroke<agg::conv_contour<agg::path_storage>> stroke(contour);

ras.add_path(stroke);

结果分析:第二个例子顺利的进行扩展线的放大或缩小,但是第一个例子刚好相反,两个例子之间的区别就是图形绘制的方向不同而已。所以为了解决这种问题,才引入了contour.auto_detect_orientation函数。

把第一个例子的上面函数去掉注释,就可以按照正常的逻辑进行缩放轮廓线。

时间: 2024-10-17 06:31:25

agg::conv_contour函数auto_detect_orientation作用的相关文章

AGG第二十二课 conv_contour函数auto_detect_orientation的字体应用

1 提供如下的代码结构渲染字体 agg::conv_transform<...> conv (path,matrix); agg::conv_curve<...> curve (conv); agg::conv_contour<...> contour(curve); curve.approximaltion_scale (scale); contour.auto_detect_orientation (true); contour.width (bold); 当bol

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

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

[转]什么是C++虚函数、虚函数的作用和使用方法

我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是“重复定义”.但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数.例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数.这两个函数不仅名字相同,而且参数个数相同(均为0),但功能不同,函数体是不同的.前者的作用是求圆面积,后者的作用是求圆柱体的表面积

agg::conv_contour无法应用于自交的封闭图形

测试代码: void DrawIntersectContour() { agg::rendering_buffer &rbuf = rbuf_window(); agg::pixfmt_bgr24 pixf(rbuf); typedef agg::renderer_base<agg::pixfmt_bgr24> renderer_base_type; renderer_base_type renb(pixf); typedef agg::renderer_scanline_aa_sol

18-C语言static和extern关键字1-对函数的作用

一.extern与函数 在第三讲和第四讲中,我提到过一句话:如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数.将这些相关联的目标文件链接在一起后才能生成可执行文件. 先来理解2个概念: 外部函数:如果在当前文件中定义的函数允许其他文件访问.调用,就称为外部函数.C语言规定,不允许有同名的外部函数. 内部函数:如果在当前文件中定义的函数不允许其他文件访问

编程题:strcmp()函数的作用是:从左到右逐个字符比较。遇见‘\0’为止。

编程题:strcmp()函数的作用是:从左到右逐个字符比较.(按照字符对应的ascii码值比较)遇见'\0'为止. #include<stdio.h> #include<string.h> int string_compare(char string1[],char string2[]) { int i=0; while(string1[i]==string2[i]&&string1[i]!='\0') i++; return string1[i]-string2[

set_error_handler这个函数的作用是为了防止错误路径泄露

set_error_handler这个函数的作用是为了防止错误路径泄露 何为错误路径泄露呢? 我们写程序,难免会有问题(是经常会遇到问题  ),而PHP遇到错误时,就会给出出错脚本的位置.行数和原因 有很多人说,这并没有什么大不了.确实,在调试程序阶段,这确实是没啥的,而且我认为给出错误路径是必要的. 但泄露了实际路径的后果是不堪设想的,对于某些入侵者,这个信息可是非常重要,而事实上现在有很多的服务器都存在这个问题. 有些网管干脆把PHP配置文件中的display_errors设置为Off来解决

15-static和extern关键字1-对函数的作用

一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数.将这些相关联的目标文件链接在一起后才能生成可执行文件. 先来理解2个概念: 外部函数:如果在当前文件中定义的函数允许其他文件访问.调用,就称为外部函数.C语言规定,不允许有同名的外部函数. 内部函数:如果在当前文件中定义的函数不允许其他文件访问.调用,只能在内部使用,就称为内部函

Delphi Canvas的FillRect(const Rect: TRect) 函数的作用

http://blog.163.com/[email protected]/blog/static/165262758201131211341460/ Delphi Canvas的FillRect(const Rect: TRect) 函数的作用 2011-04-12 11:34:14|  分类: Delphi|举报|字号 订阅 下载LOFTER我的照片书  | FillRect 函数功能:该函数用指定的画刷填充矩形. 用法://Delphi自带的帮助 var  Bitmap: TBitmap;