Qt绘图事件:QPainter、QPaintEngine和QPaintDevice
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Qt绘图事件:QPainter、QPaintEngine和QPaintDevice
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                一、繪圖,刷新界面的方法
1、繪圖事件
一般在繪圖事件中繪圖
1 void paintEvent(QPaintEvent *);//繪圖事件在窗口重繪的時候(即狀態(tài)改變)的時候調(diào)用 2 { 3 //1、創(chuàng)建畫家對象 4 QPainter p(this);//指定當(dāng)前窗口為繪圖設(shè)備 5 6 //2、具體操作 7 //畫背景圖 /* 不需要添加資源文件 */ 8 QPixmap("../Image/bk.png"));//參數(shù):頂點(diǎn)坐標(biāo)、長、寬 9 //p.drawPixmap(rect(), QPixmap("../Image/bk.png"));//參數(shù):定點(diǎn)坐標(biāo),寬,高,圖片 10 11 //畫直線 12 #if 0 13 //定義畫筆 用以繪制輪廓線 14 QPen pen; 15 pen.setWidth(5); //設(shè)置線寬 16 //pen.setColor(Qt::red); //設(shè)置顏色 17 pen.setColor( QColor(14, 9, 234) );//rgb設(shè)置顏色 18 pen.setStyle(Qt::DashLine); //設(shè)置風(fēng)格 19 //把畫筆交給畫家 20 p.setPen(pen); 21 #endif 22 p.drawLine(50,50,150,50);//起點(diǎn)和終點(diǎn)坐標(biāo) 23 24 //畫矩形 25 p.drawRect(50,50,150,150); 26 27 //畫圓 28 p.drawEllipse(QPint(50,50),50,25);//參數(shù):圓心 水平方向半徑 垂直方向半徑 29 #if 0//畫刷 用以用來填充 30 QBrush brush; //創(chuàng)建畫刷對象 31 brush.setColor(Qt::red); //設(shè)置顏色 32 brush.setStyle(Qt::Dense1Pattern);//設(shè)置樣式 33 p.setBrush(brush);//把畫刷交給畫家 34 #endif 35 }2、手動刷新
   update();//庫函數(shù)update,間接調(diào)用paintEvent
?
二、QBitmap和QPixmap
   QBitmap只有黑白2種顏色,而QPixmap彩色繪圖
   當(dāng)不需要彩色的時候,可以使用QBitmap;因?yàn)镼Bitmap耗費(fèi)資源少。
?
三、常用的繪圖設(shè)備
  一般情況,QPixmap用于顯示;QImage用于傳輸;
1、QPixmap:針對屏幕進(jìn)行優(yōu)化,和平臺相關(guān),不能對圖片進(jìn)行修改(像素點(diǎn))
2、QImage:和平臺相關(guān),可以對圖片進(jìn)行修改,可以在線程中繪圖
1 QImage image(400, 300, QImage::Format_ARGB32);//QImage::Format_ARGB32背景是透明 2 QPainter p(&image); 3 //繪圖 4 p.drawImage(0, 0, QImage("../Image/face.png"));//drawPixmap()也行 5 //對繪圖設(shè)備前50個像素點(diǎn)進(jìn)行操作 6 for(int i = 0; i < 50; i++) 7 { 8 for(int j = 0; j < 50; j++) 9 { 10 image.setPixel(QPoint(i, j), qRgb(0, 255, 0)); 11 } 12 } 13 image.save("../image.png");3、QPicture:保存繪圖的狀態(tài)(二進(jìn)制文件)
1 QPicture picture; 2 QPainter p(&picture); 3 p.drawPixmap(0,0,80,80, QPixmap("../image/face.png")); 4 picture.save("../picture");//保存的是二進(jìn)制文件 5 #if 0//加載QPicture圖片 6 QPicture pic; 7 pic.load("../picture"); 8 #endif4、QPixmap與QImage的轉(zhuǎn)換
 //QImage用于傳輸、QPixmap用于顯示
?
轉(zhuǎn)載于:https://www.cnblogs.com/wangbin-heng/p/9484272.html
總結(jié)
以上是生活随笔為你收集整理的Qt绘图事件:QPainter、QPaintEngine和QPaintDevice的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Cannot connect to d
- 下一篇: WPF 获取屏幕分辨率(获取最大宽高)等
