引言:
,,,,在gg/例子目录下,提供的很多例子都携带滚动条的,并且通过滚动条,可以动态看到图像色彩的渐变过程,因此一下gg:: slider_ctrl工具类。
图形:
x1,,,, x2,日元,y2,, flip_y=)
,, m_slider1。范围(100);//
,,, m_slider1.num_steps (10);//
,,, m_slider1.value (1.0);//
,, m_slider1。标签(“像素大?% 1.0 f ");//
, m_slider1.no_transform();//不允许缩放
, int nScaleX=
1
3)添加到事件响应列表
# include“gg/include/agg_basics。h”
#包括“gg/include/agg_conv_curve。h”
#包括“gg/include/agg_trans_perspective。h”
#包括“gg/include/agg_renderer_scanline。h”
#包括“gg/include/agg_rendering_buffer。h”
#包括“gg/include/agg_rasterizer_scanline_aa。h”
#包括“gg/include/agg_scanline_u。h”
#包括“gg/include/agg_pixfmt_rgb。h”
#包括“gg/include/平台/agg_platform_support。h”
#包括“gg/include/agg_ellipse。h”
#包括“gg/include/agg_conv_contour。h”
#包括“gg/include/agg_conv_stroke。h”
#包括“gg/include/agg_renderer_base。h”
#包括“gg/include/agg_path_storage。h”
#包括“gg/include/ctrl/agg_slider_ctrl。h”
类the_application:公共gg:: platform_support
{公共:
,the_application (gg:: pix_format_e格式,bool flip_y): gg: platform_support(格式,flip_y) pix_fmt (rbuf_window ()), ren_bas (pix_fmt)
,,m_slider1 (80, 250,,,600年10月,276年,,! flip_y),
,{
,,add_ctrl (m_slider1);
,,m_slider1.range (1.0, 100.0);
,,m_slider1.num_steps (10);
,,m_slider1.value (1.0);
,,m_slider1。标签(“像素大?% 1.0 f”);
,,m_slider1.no_transform ();
,
,}
,空白draw_ellipse ()
,{
,,//渲染缓冲渲染的内存块,就是即将显示界面的颜色内存块,其中gg:: rendering_buffer
,,//类提供了一系列直接操作某一个坐标点颜色的函数,例如row_ptr ();
,,gg: rendering_buffer, rbuf=rbuf_window ();
,,gg: pixfmt_bgr24 pixf (rbuf);
,,gg: rgba8颜色(255,0,0),
,,gg: rgba c (344 1),
,,//渲染器渲染器,我们可以看成是油漆,颜料,
,,typedef gg: renderer_base
,,renderer_base_type renb (pixf);
,,//扫描线光栅光栅化,说她是画册,描述了所有我们即将描绘图案,颜色,线条,
,,//但是并不切确,因为她只是一个容器,一个记载线段,标志,详细参数的规格说明书,
,,//连草图都不是,她更像是一张菜谱,里面记录了食材,记录了烹饪的过程,仅此而已。
,,gg: rasterizer_scanline_aa<比;ras;
,,gg: scanline_u8 sl;
,,ren_bas.clear (gg:: rgba8 (255255255),
,,,
,,int nScaleX=0;
,,int nScaleY=0;
,,gg: path_storage ps;
,,ps.move_to (300300),
,,ps.line_to (320300),
,,ps.line_to (320320),
,,ps.line_to (300320),
,,ps.line_to (300300),
,,nScaleX=int (m_slider1.value ())/10;
,,nScaleY=int (m_slider2.value ())/10;,
,,gg: trans_affine mtx;
,,mtx.scale (nScaleX nScaleY);//x轴缩小到原来的一半
,,//mtx.rotate (gg::函数(40));//旋转30度
,,mtx.translate (-320 * (nScaleX-1) -320 * (nScaleY-1));//X, Y坐标分别平移100
,,typedef gg: conv_transform
,,ell_ct_type ctell (ps, mtx);//矩阵变换
,,typedef gg: conv_stroke
,,ell_cc_cs_type csccell (ctell);
,,ras.add_path (csccell);
,,gg:: render_scanlines_aa_solid (ras, sl, renb gg: rgba8 (255, 0, 0));
,,ras.reset ();
,,//渲染控制
,,gg:: render_ctrl (ras, sl, renb m_slider1);
,,
,,返回;
,,,
,,,
,,,,
,}
,虚拟空间on_draw ()
,{
,,draw_ellipse ();
,}
,null