gg第二十三课ctrl目录下agg_slider_ctrl基本使用

引言:

,,,,在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_baserenderer_base_type;

,,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_transformell_ct_type;

,,ell_ct_type ctell (ps, mtx);//矩阵变换


,,typedef gg: conv_strokeell_cc_cs_type;

,,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

gg第二十三课ctrl目录下agg_slider_ctrl基本使用