正如名称所言:自动检测方向,什么方向,可能很多人不了解,通过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函数。
把第一个例子的上面函数去掉注释,就可以按照正常的逻辑进行缩放轮廓线。