乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      總結(jié):QPixmap、QImage、QBitmap和QPicture

       寂靜如河 2012-07-17

      ·QImageQpixmap的區(qū)別

       

         1QPixmap主要是用于繪圖,針對(duì)屏幕顯示而最佳化設(shè)計(jì),QImage主要是為圖像I/O、圖片訪(fǎng)問(wèn)和像素修改而設(shè)計(jì)的

       

         2、QPixmap依賴(lài)于所在的平臺(tái)的繪圖引擎,故例如反鋸齒等一些效果在不同的平臺(tái)上可能會(huì)有不同的顯示效果,QImage使用Qt自身的繪圖引擎,可在不同平臺(tái)上具有相同的顯示效果

       

         3、目前的Qt會(huì)把QPixmap都存儲(chǔ)在graphics memory中,QImage是存儲(chǔ)在客戶(hù)端的,是獨(dú)立于硬件的。在 X11, Mac 以及 Symbian平臺(tái)上,QPixmap 是存儲(chǔ)在服務(wù)器端,而QImage則是存儲(chǔ)在客戶(hù)端,在Windows平臺(tái)上,QPixmap和QImage都是存儲(chǔ)在客戶(hù)端,并不使用任何的GDI資源。

       

         4、由于QImage是獨(dú)立于硬件的,也是一種QPaintDevice,因此我們可以在另一個(gè)線(xiàn)程中對(duì)其進(jìn)行繪制,而不需要在GUI線(xiàn)程中處理,使用這一方式可以很大幅度提高UI響應(yīng)速度。

       

         5QImage可通過(guò)setPixpel()pixel()等方法直接存取指定的像素,Qt的文檔中有如下例程:

       

      QImage image(3, 3, QImage::Format_RGB32);

      QRgb value;

      value = qRgb(189, 149, 39);

      image.setPixel(1, 1, value);

      value = qRgb(122, 163, 39);

      image.setPixel(0, 1, value);

      image.setPixel(1, 0, value);

      value = qRgb(237, 187, 51);

      image.setPixel(2, 1, value);

      QPixmap、QImage、QBitmap和QPicture - Elerao - Static Elerao

       

       

      ·QImage的顯示

       

      ·QPainter中繪制QImage的接口原型:

       

      void QPainter::drawImage ( int x, int y,

        const QImage & image,

        int sx = 0, int sy = 0,

        int sw = -1, int sh = -1,

        Qt::ImageConversionFlags flags = Qt::AutoColor )

       

         其中xy為繪制位置,sx和sy是指圖像左上角的坐標(biāo),sw和sh是指定了圖像的大小,如果都為0或負(fù)數(shù),就顯示完整個(gè)圖像。

       

      QImage image;

      image.load( ":/pics/earth.png" );

       

      QPainter painter(this);

      painter.drawImage(0,0, image);

       

      ·當(dāng)圖片較大時(shí),我們可以先通過(guò)QImage將圖片加載進(jìn)來(lái),然后把圖片縮放成需要的尺寸,最后轉(zhuǎn)換成QPixmap 進(jìn)行顯示。

       

      QImage image;

      image.load( ":/pics/earth.png" );

       

      QPainter painter(this);

      QPixmap pixmapToShow = QPixmap::fromImage( image.scaled(size(), Qt::KeepAspectRatio) );

      painter.drawPixmap(0,0, pixmapToShow);

       

       

       

      ·QBitmapQPixmap

       

      ·QBitmapQPixmap的一個(gè)子類(lèi),主要用于顯示單色位圖。用于制作游標(biāo)QCursor或筆刷QBrush等,圖像顯示對(duì)比如下

       

      QPixmap pixImg("caterpillar.jpg");

      QBitmap bitImg("caterpillar.jpg");

      QPainter painter(this);

      painter.drawPixmap(0, 0, pixImg);

      painter.drawPixmap(200, 0, bitImg);

       


       QPixmap、QImage、QBitmap和QPicture - Elerao - Static Elerao

       

       

      ·QPicture

       

      ·QPicture則是一個(gè)繪圖裝置,用于記錄和重播Qpainter的繪圖指令。

      ·使用begin()方法在QPicture上進(jìn)行繪圖,使用end()結(jié)束繪圖,使用save()保存至檔案

       

      QPicture picture;

      QPainter painter;

      painter.begin(&picture); 

      painter.drawRect(10, 20, 100, 50);

      painter.end();

      picture.save("draw_record.pic");

       

         需重播繪圖指令的話(huà),新建一個(gè)QPicture對(duì)象,使用load()重新載入保存的檔案,然后再在指定的繪圖設(shè)備QDevice上繪制QPicture

       

      QPicture picture;

      picture.load("draw_record.pic");  

      QPainter painter;

      painter.begin(this);

      painter.drawPicture(0, 0, picture); 

      painter.end(); 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多