⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canvas-example.html

📁 QT 下载资料仅供参考
💻 HTML
📖 第 1 页 / 共 3 页
字号:
    <a href="qcanvasitemlist.html">QCanvasItemList</a> list = <a href="qcanvasitem.html#canvas">canvas</a>()-&gt;allItems();    QCanvasItemList::Iterator it = list.<a href="qvaluelist.html#begin">begin</a>();    for (; it != list.<a href="qvaluelist.html#end">end</a>(); ++it) {        if ( *it )            delete *it;    }}<a name="x2726"></a>void FigureEditor::<a href="qscrollview.html#contentsMouseMoveEvent">contentsMouseMoveEvent</a>(QMouseEvent* e){    if ( moving ) {        <a href="qpoint.html">QPoint</a> p = inverseWorldMatrix().map(e-&gt;pos());        moving-&gt;moveBy(p.<a href="qpoint.html#x">x</a>() - moving_start.x(),                       p.<a href="qpoint.html#y">y</a>() - moving_start.y());        moving_start = p;        <a href="qcanvasitem.html#canvas">canvas</a>()-&gt;update();    }}<a name="f587"></a>BouncyLogo::BouncyLogo(QCanvas* canvas) :    <a href="qcanvassprite.html">QCanvasSprite</a>(0,canvas){    static QCanvasPixmapArray logo("qt-trans.xpm");    <a href="qcanvassprite.html#setSequence">setSequence</a>(&amp;logo);    <a href="qcanvasitem.html#setAnimated">setAnimated</a>(TRUE);    initPos();}const int logo_rtti = 1234;<a name="x2704"></a>int BouncyLogo::<a href="qcanvassprite.html#rtti">rtti</a>() const{    return logo_rtti;}void <a name="f588"></a>BouncyLogo::initPos(){    initSpeed();    int trial=1000;    do {        <a href="qcanvassprite.html#move">move</a>(rand()%canvas()-&gt;width(),rand()%canvas()-&gt;height());        advance(0);    } while (trial-- &amp;&amp; xVelocity()==0.0 &amp;&amp; yVelocity()==0.0);}void <a name="f589"></a>BouncyLogo::initSpeed(){    const double speed = 4.0;    double d = (double)(rand()%1024) / 1024.0;    setVelocity( d*speed*2-speed, (1-d)*speed*2-speed );}<a name="x2703"></a>void BouncyLogo::<a href="qcanvassprite.html#advance">advance</a>(int stage){    switch ( stage ) {      case 0: {        double vx = xVelocity();        double vy = yVelocity();        if ( vx == 0.0 &amp;&amp; vy == 0.0 ) {            // stopped last turn            initSpeed();            vx = xVelocity();            vy = yVelocity();        }        double nx = <a href="qwidget.html#x">x</a>() + vx;        double ny = <a href="qwidget.html#y">y</a>() + vy;        if ( nx &lt; 0 || nx &gt;= canvas()-&gt;width() )            vx = -vx;        if ( ny &lt; 0 || ny &gt;= canvas()-&gt;height() )            vy = -vy;        for (int bounce=0; bounce&lt;4; bounce++) {            <a href="qcanvasitemlist.html">QCanvasItemList</a> l=collisions(FALSE);            for (QCanvasItemList::Iterator it=l.<a href="qvaluelist.html#begin">begin</a>(); it!=l.<a href="qvaluelist.html#end">end</a>(); ++it) {                <a href="qcanvasitem.html">QCanvasItem</a> *hit = *it;<a name="x2693"></a><a name="x2690"></a>                if ( hit-&gt;<a href="qcanvasitem.html#rtti">rtti</a>()==logo_rtti &amp;&amp; hit-&gt;<a href="qcanvasitem.html#collidesWith">collidesWith</a>(this) ) {                    switch ( bounce ) {                      case 0:                        vx = -vx;                        break;                      case 1:                        vy = -vy;                        vx = -vx;                        break;                      case 2:                        vx = -vx;                        break;                      case 3:                        // Stop for this turn                        vx = 0;                        vy = 0;                        break;                    }                    setVelocity(vx,vy);                    break;                }            }        }        if ( <a href="qwidget.html#x">x</a>()+vx &lt; 0 || x()+vx &gt;= canvas()-&gt;width() )            vx = 0;        if ( <a href="qwidget.html#y">y</a>()+vy &lt; 0 || y()+vy &gt;= canvas()-&gt;height() )            vy = 0;        setVelocity(vx,vy);      } break;      case 1:<a name="x2689"></a>        <a href="qcanvasitem.html">QCanvasItem</a>::<a href="qcanvasitem.html#advance">advance</a>(stage);        break;    }}static uint mainCount = 0;static QImage *butterflyimg;static QImage *logoimg;<a name="f597"></a>Main::Main(QCanvas&amp; c, QWidget* parent, const char* name, WFlags f) :    <a href="qmainwindow.html">QMainWindow</a>(parent,name,f),    canvas(c){    editor = new FigureEditor(canvas,this);    <a href="qmenubar.html">QMenuBar</a>* menu = <a href="qmainwindow.html#menuBar">menuBar</a>();    <a href="qpopupmenu.html">QPopupMenu</a>* file = new <a href="qpopupmenu.html">QPopupMenu</a>( menu );<a name="x2712"></a>    file-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Fill canvas", this, SLOT(init()), CTRL+Key_F);    file-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Erase canvas", this, SLOT(clear()), CTRL+Key_E);    file-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;New view", this, SLOT(newView()), CTRL+Key_N);    file-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();    file-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Print", this, SLOT(print()), CTRL+Key_P);    file-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();    file-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("E&amp;xit", qApp, SLOT(<a href="qapplication.html#quit">quit</a>()), CTRL+Key_Q);    menu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;File", file);    <a href="qpopupmenu.html">QPopupMenu</a>* edit = new <a href="qpopupmenu.html">QPopupMenu</a>( menu );    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Circle", this, SLOT(addCircle()), ALT+Key_C);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Hexagon", this, SLOT(addHexagon()), ALT+Key_H);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Polygon", this, SLOT(addPolygon()), ALT+Key_P);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add Spl&amp;ine", this, SLOT(addSpline()), ALT+Key_I);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Text", this, SLOT(addText()), ALT+Key_T);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Line", this, SLOT(addLine()), ALT+Key_L);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Rectangle", this, SLOT(addRectangle()), ALT+Key_R);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Sprite", this, SLOT(addSprite()), ALT+Key_S);    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Create &amp;Mesh", this, SLOT(addMesh()), ALT+Key_M );    edit-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Add &amp;Alpha-blended image", this, SLOT(addButterfly()), ALT+Key_A);    menu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Edit", edit);    <a href="qpopupmenu.html">QPopupMenu</a>* view = new <a href="qpopupmenu.html">QPopupMenu</a>( menu );    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Enlarge", this, SLOT(enlarge()), SHIFT+CTRL+Key_Plus);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Shr&amp;ink", this, SLOT(shrink()), SHIFT+CTRL+Key_Minus);    view-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Rotate clockwise", this, SLOT(rotateClockwise()), CTRL+Key_PageDown);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Rotate &amp;counterclockwise", this, SLOT(rotateCounterClockwise()), CTRL+Key_PageUp);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Zoom in", this, SLOT(zoomIn()), CTRL+Key_Plus);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Zoom &amp;out", this, SLOT(zoomOut()), CTRL+Key_Minus);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Translate left", this, SLOT(moveL()), CTRL+Key_Left);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Translate right", this, SLOT(moveR()), CTRL+Key_Right);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Translate up", this, SLOT(moveU()), CTRL+Key_Up);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Translate down", this, SLOT(moveD()), CTRL+Key_Down);    view-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Mirror", this, SLOT(mirror()), CTRL+Key_Home);    menu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;View", view);    options = new <a href="qpopupmenu.html">QPopupMenu</a>( menu );    dbf_id = options-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("Double buffer", this, SLOT(toggleDoubleBuffer()));<a name="x2715"></a>    options-&gt;<a href="qmenudata.html#setItemChecked">setItemChecked</a>(dbf_id, TRUE);    menu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Options",options);    menu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();    <a href="qpopupmenu.html">QPopupMenu</a>* help = new <a href="qpopupmenu.html">QPopupMenu</a>( menu );    help-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;About", this, SLOT(help()), Key_F1);    help-&gt;<a href="qmenudata.html#setItemChecked">setItemChecked</a>(dbf_id, TRUE);    menu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>("&amp;Help",help);    <a href="qmainwindow.html#statusBar">statusBar</a>();    <a href="qmainwindow.html#setCentralWidget">setCentralWidget</a>(editor);    printer = 0;    init();}void <a name="f598"></a>Main::init(){    clear();    static int r=24;    srand(++r);    mainCount++;    butterflyimg = 0;    logoimg = 0;    int i;<a name="x2688"></a>    for ( i=0; i&lt;canvas.<a href="qcanvas.html#width">width</a>() / 56; i++) {        addButterfly();    }    for ( i=0; i&lt;canvas.<a href="qcanvas.html#width">width</a>() / 85; i++) {        addHexagon();    }    for ( i=0; i&lt;canvas.<a href="qcanvas.html#width">width</a>() / 128; i++) {        addLogo();    }}Main::~Main(){    delete printer;    if ( !--mainCount ) {        delete[] butterflyimg;        butterflyimg = 0;        delete[] logoimg;        logoimg = 0;    }}void <a name="f599"></a>Main::newView(){    // Open a new view... have it delete when closed.    Main *m = new Main(canvas, 0, 0, WDestructiveClose);    qApp-&gt;<a href="qapplication.html#setMainWidget">setMainWidget</a>(m);    m-&gt;<a href="qwidget.html#show">show</a>();    qApp-&gt;<a href="qapplication.html#setMainWidget">setMainWidget</a>(0);}void <a name="f600"></a>Main::clear(){    editor-&gt;clear();}void <a name="f601"></a>Main::help(){    static QMessageBox* about = new <a href="qmessagebox.html">QMessageBox</a>( "Qt Canvas Example",            "&lt;h3&gt;The QCanvas classes example&lt;/h3&gt;"            "&lt;ul&gt;"                "&lt;li&gt; Press ALT-S for some sprites."                "&lt;li&gt; Press ALT-C for some circles."                "&lt;li&gt; Press ALT-L for some lines."                "&lt;li&gt; Drag the objects around."                "&lt;li&gt; Read the code!"            "&lt;/ul&gt;", QMessageBox::Information, 1, 0, 0, this, 0, FALSE );    about-&gt;setButtonText( 1, "Dismiss" );    about-&gt;show();}void <a name="f602"></a>Main::aboutQt(){    QMessageBox::<a href="qmessagebox.html#aboutQt">aboutQt</a>( this, "Qt Canvas Example" );}void <a name="f603"></a>Main::toggleDoubleBuffer(){<a name="x2714"></a>    bool s = !options-&gt;<a href="qmenudata.html#isItemChecked">isItemChecked</a>(dbf_id);    options-&gt;<a href="qmenudata.html#setItemChecked">setItemChecked</a>(dbf_id,s);<a name="x2687"></a>    canvas.<a href="qcanvas.html#setDoubleBuffering">setDoubleBuffering</a>(s);}void <a name="f604"></a>Main::enlarge(){<a name="x2686"></a><a name="x2685"></a>    canvas.<a href="qcanvas.html#resize">resize</a>(canvas.<a href="qcanvas.html#width">width</a>()*4/3, canvas.<a href="qcanvas.html#height">height</a>()*4/3);}void <a name="f605"></a>Main::shrink(){    canvas.<a href="qcanvas.html#resize">resize</a>(canvas.<a href="qcanvas.html#width">width</a>()*3/4, canvas.<a href="qcanvas.html#height">height</a>()*3/4);}void <a name="f606"></a>Main::rotateClockwise(){<a name="x2707"></a>    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();<a name="x2731"></a>    m.<a href="qwmatrix.html#rotate">rotate</a>( 22.5 );<a name="x2706"></a>    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f607"></a>Main::rotateCounterClockwise(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();    m.<a href="qwmatrix.html#rotate">rotate</a>( -22.5 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f608"></a>Main::zoomIn(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();<a name="x2732"></a>    m.<a href="qwmatrix.html#scale">scale</a>( 2.0, 2.0 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f609"></a>Main::zoomOut(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();    m.<a href="qwmatrix.html#scale">scale</a>( 0.5, 0.5 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f610"></a>Main::mirror(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();    m.<a href="qwmatrix.html#scale">scale</a>( -1, 1 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f611"></a>Main::moveL(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();<a name="x2733"></a>    m.<a href="qwmatrix.html#translate">translate</a>( -16, 0 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );}void <a name="f612"></a>Main::moveR(){    <a href="qwmatrix.html">QWMatrix</a> m = editor-&gt;<a href="qcanvasview.html#worldMatrix">worldMatrix</a>();    m.<a href="qwmatrix.html#translate">translate</a>( +16, 0 );    editor-&gt;<a href="qcanvasview.html#setWorldMatrix">setWorldMatrix</a>( m );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -