真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AGG第二十三課ctrl目錄下agg_slider_ctrl基本使用

引言:

創(chuàng)新互聯(lián)秉承實現(xiàn)全網(wǎng)價值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),成都微信小程序,網(wǎng)頁設(shè)計制作,成都手機網(wǎng)站制作營銷型網(wǎng)站幫助傳統(tǒng)企業(yè)實現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。

    在agg/examples目錄下,提供的很多例子都攜帶滾動條的,并且通過滾動條,可以動態(tài)看到圖像色彩的漸變過程。因此一下agg::slider_ctrl工具類。

圖形:

  /*

 

                                           *(x2,y2)

                                      *     *

                              *             *

                          *                 *

                    *                       *

                *                           *

            *                               * 

      *                                     *

(x1,y1)**************************************(x2,y1)

  */

函數(shù):

構(gòu)造函數(shù):slider_ctrl(double x1, double y1, doublex2, double y2, bool flip_y=false)

   m_slider1.range(1, 100);//設(shè)置滾動條的取值范圍

   m_slider1.num_steps(10);//設(shè)置滾動條的步寬,

   m_slider1.value(1.0);//設(shè)置初始值

   m_slider1.label("Pixel size=%1.0f");//顯示當(dāng)前滾動條的值

 m_slider1.no_transform();//不允許縮放

 int nScaleX =m_slider1.value();//獲取當(dāng)前值



1)添加頭文件

#include "agg/include/ctrl/agg_slider_ctrl.h"

2)定義:

agg::slider_ctrl   m_slider1;

3)添加到事件響應(yīng)列表

添加到windows platform例子中:

 add_ctrl(m_slider1);

/*

通過上面的函數(shù),將控件元素添加到事件監(jiān)聽列表中,當(dāng)鼠標(biāo)或者鍵盤發(fā)生事件的時候

,會傳遞給該控件,由該控件判斷是否是屬于自己的事件(是否正在滑動滾動條)。

通過注釋該函數(shù),作者可體會到,滑動進(jìn)度條,沒有任何的反映。

*/

4)渲染控件

agg::render_ctrl(ras, sl, renb, m_slider1);

5)由于是把代碼放在on_draw,需要強行刷新

force_redraw();


簡單的應(yīng)用例子如下:

#include "agg/include/agg_basics.h"

#include "agg/include/agg_conv_curve.h"

#include "agg/include/agg_trans_perspective.h"

#include "agg/include/agg_renderer_scanline.h"

#include "agg/include/agg_rendering_buffer.h"

#include "agg/include/agg_rasterizer_scanline_aa.h"

#include "agg/include/agg_scanline_u.h"

#include "agg/include/agg_pixfmt_rgb.h"

#include "agg/include/platform/agg_platform_support.h"

#include "agg/include/agg_ellipse.h"

#include "agg/include/agg_conv_contour.h"

#include "agg/include/agg_conv_stroke.h"

#include "agg/include/agg_renderer_base.h"

#include "agg/include/agg_path_storage.h"

#include "agg/include/ctrl/agg_slider_ctrl.h"


class the_application:public agg::platform_support

{

public:


  the_application(agg::pix_format_e format, bool flip_y):agg::platform_support(format,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.label("Pixel size=%1.0f");

    m_slider1.no_transform();

 

  }



  void draw_ellipse()

  {

    //Rendering Buffer渲染的內(nèi)存塊,就是即將顯示界面的顏色內(nèi)存塊,其中agg::rendering_buffer

    //類提供了一系列直接操作某一個坐標(biāo)點顏色的函數(shù),例如row_ptr();

    agg::rendering_buffer &rbuf = rbuf_window();

    agg::pixfmt_bgr24 pixf(rbuf);

    agg::rgba8 color(255,0,0);

    agg::rgba c(344,1);



    //Renderers渲染器,我們可以看成是油漆,顏料,

    typedef agg::renderer_base renderer_base_type;

    renderer_base_type renb(pixf);



    //Scanline Rasterizer光柵化,說她是畫冊,描述了所有我們即將描繪圖案,顏色,線條,

    //但是并不切確,因為她只是一個容器,一個記載線段,標(biāo)志,詳細(xì)參數(shù)的規(guī)格說明書,

    //連草圖都不是,她更像是一張菜譜,里面記錄了食材,記錄了烹飪的過程,僅此而已。

    agg::rasterizer_scanline_aa<> ras;

    agg::scanline_u8 sl;

    ren_bas.clear(agg::rgba8(255,255,255));

    



    int nScaleX = 0;

    int nScaleY = 0;

    agg::path_storage ps;

    ps.move_to(300,300);

    ps.line_to(320,300);

    ps.line_to(320,320);

    ps.line_to(300,320);

    ps.line_to(300,300);


    nScaleX = int(m_slider1.value())/10;

    nScaleY = int(m_slider2.value())/10; 

    agg::trans_affine mtx;

    mtx.scale(nScaleX,nScaleY); //x軸縮小到原來的一半

   // mtx.rotate(agg::deg2rad(40));//旋轉(zhuǎn)30度

    mtx.translate(-320*(nScaleX-1) ,-320*(nScaleY-1));//X,Y坐標(biāo)分別平移100

    typedef agg::conv_transform ell_ct_type;

    ell_ct_type ctell(ps,mtx); //矩陣變換


    typedef agg::conv_stroke 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();


    // Render the controls

    agg::render_ctrl(ras, sl, renb, m_slider1);

  

    return;

    

    

      

  }


  virtual void on_draw()

  {

    draw_ellipse();

  }


  virtual void on_mouse_button_down(int x, int y, unsigned flags)

  {

    if (flags == agg::mouse_left)

    {

      char str[50];

      sprintf(str,"Mouse location:(%d,%d)", x, y);

      message(str);

    }

  }


private:


  agg::slider_ctrl m_slider1;

  agg::pixfmt_rgb24 pix_fmt;

  agg::renderer_base ren_bas;

};




int agg_main(int argc, char* argv[])

{

  the_application app(agg::pix_format_bgr24,false);

  app.caption("AGG Example.Anti_Aliasing Demo");


  if (app.init(1800, 1800, agg::window_resize))

  {

    return app.run();

  }


  return -1;

}


網(wǎng)站名稱:AGG第二十三課ctrl目錄下agg_slider_ctrl基本使用
轉(zhuǎn)載來源:http://weahome.cn/article/piceeo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部