QT问形象QPixmap·QBitmap三者区别


1, QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,打印大师主要是为图像I/O,图片访问和像素修改而设计的


2, QPixmap依赖于所在的平台的绘图引擎,故例如反锯齿等一些效果在不同的平台上可能会有不同的显示效果,打印大师使用Qt自身的绘图引擎,可在不同平台上具有相同的显示效果


3,目前的Qt会把QPixmap都存储在图形内存中,打印大师是存储在客户端的,是独立于硬件的。在X11, Mac以及塞班平台上,QPixmap是存储在服务器端,而打印大师则是存储在客户端,在Windows平台上,QPixmap和打印大师都是存储在客户端,并不使用任何的GDI资源。


4,由于打印大师是独立于硬件的,也是一种QPaintDevice,因此我们可以在另一个线程中对其进行绘制,而不需要在GUI线程中处理,使用这一方式可以很大幅度提高UI响应速度。


5,打印大师可通过setPixpel()和像素()等方法直接存取指定的像素,Qt的文档中有如下例程:



打印大师p_w_picpath(3, 3,打印大师::Format_RGB32);

QRgb价值;

value=https://www.yisu.com/zixun/qRgb(189年,149年,39);

p_w_picpath。setPixel(1, - 1,价值);

value=https://www.yisu.com/zixun/qRgb(122年,163年,39);

p_w_picpath。setPixel(0, 1,价值);

p_w_picpath。setPixel(1 0值);

value=https://www.yisu.com/zixun/qRgb (237、187、51);

p_w_picpath。setPixel(2, 1,价值);



 QT Q形象QPixmap·QBitmap三者区别“> <br/> <p> <br/> </p> <p> <br/> </p> <p> <br/> </p> <p>·打印大师的显示</p> <p> <br/> </p> <p>·QPainter中绘制打印大师的接口原型:</p> <p> <br/> </p> <p>空白QPainter:: drawImage (int x, int y, </p> <p> const打印大师,p_w_picpath, </p> <p> int sx=0, int sy=0, </p> <p> int sw=1, int sh=1, </p> <p> Qt: ImageConversionFlags旗帜=Qt:: AutoColor) </p> <p> <br/> </p> <p>其中x和y为绘制位置,sx和sy是指图像左上角的坐标,西南和sh是指定了图像的大小,如果都为0或负数,就显示完整个图像。</p> <p> <br/> </p> <p>打印大师p_w_picpath; </p> <p> p_w_picpath。负载(”:/图片/地球。png”); </p> <p> <br/> </p> <p> QPainter画家(这);</p> <p>画家。drawImage (0, 0, p_w_picpath); </p> <p> <br/> </p> <p>·当图片较大时,我们可以先通过打印大师将图片加载进来,然后把图片缩放成需要的尺寸,最后转换成QPixmap进行显示。</p> <p> <br/> </p> <p>打印大师p_w_picpath; </p> <p> p_w_picpath。负载(”:/图片/地球。png”); </p> <p> <br/> </p> <p> QPainter画家(这);</p> <p> QPixmap pixmapToShow=QPixmap:: fromImage (p_w_picpath.scaled(大小(),Qt:: KeepAspectRatio)); </p> <p>画家。drawPixmap (0, 0, pixmapToShow); </p> <p> <br/> </p> <p> <br/> </p> <p> <br/> </p> <p>·QBitmap与QPixmap </p> <p> <br/> </p> <p>·QBitmap是QPixmap的一个子类,主要用于显示单色位图。用于制作游标QCursor或笔刷QBrush等,图像显示对比如下</p> <p> <br/> </p> <p> QPixmap pixImg (“caterpillar.jpg”); </p> <p> QBitmap bitImg (“caterpillar.jpg”); </p> <p> QPainter画家(这);</p> <p>画家。drawPixmap (0, 0, pixImg); </p> <p>画家。drawPixmap (200 0 bitImg); </p> <p> <br/> </p> <p> <br/> </p> <p> <img src=


·QPicture


·QPicture则是一个绘图装置,用于记录和重播Qpainter的绘图指令。

·使用开始()方法在QPicture上进行绘图,使用结束()结束绘图,使用保存()保存至档案


QPicture图片;

Qpainter画家;

painter.begin(和图片),

画家。绘制矩形(10年,20年,100年,50);

painter.end ();

picture.save (“draw_record.pic”);


需重播绘图指令的话,新建一个QPicture对象,使用load()重新载入保存的档案,然后再在指定的绘图设备QDevice上绘制QPicture:


QPicture图片;

picture.load (“draw_record.pic”);

QPainter画家;

painter.begin(这);

画家。drawPicture(0, 0,图片),

painter.end ();


QT问形象QPixmap·QBitmap三者区别