零基礎開始QT繪圖(2)
阿新 • • 發佈:2018-12-22
上一篇我們學習了在widget中繪製一個簡單的矩形,雖然簡單,但至少我們摸清了進入在QT繪製圖形的大門。接下來,在這篇中,我們順著大門繼續往前走。
我們僅僅學習到畫一根線一個矩形是遠遠不夠的,接下來我們來了解QT繪圖的四個必備法寶的應用,這5個法寶就是指5個物件,QPainter QBrush,QPen,QFont,QImage有了這5個物件,我們基本可以完成一半圖形展示的需要了。
我們來看一段程式碼:
QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHints(QPainter::HighQualityAntialiasing); QRect rec(this->width()/4,this->height()/4,this->width()/2,this->height()/2); QPen pen; pen.setWidth(4); pen.setColor(Qt::green); pen.setStyle(Qt::SolidLine); pen.setCapStyle(Qt::FlatCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen); QBrush brush; brush.setColor(Qt::blue); brush.setStyle(Qt::VerPattern); painter.setBrush(brush); QFont font; font.setPixelSize(48); pen.setStyle(Qt::DotLine); painter.setFont(font); QImage image; QString filename="D:/Pictures/test.jpg"; if(QFile::exists(filename)) { image.load(filename); painter.drawImage(rec, image); } painter.drawRect(rec); painter.fillRect(rec,brush); painter.drawEllipse(rec); painter.drawText(rec,Qt::AlignCenter,"Hello");
我們這段程式碼完整的展示了這5個物件的基本使用方法。下面我們逐個的來解釋。
QPainter,是用來進行繪圖操作的類,在這裡我們不用管繪圖裝置(QPaintDevice)及繪圖引擎(QPaintEngine),在PaintEvent方法中直接使用即可。QBrush QPen QFont 是QPainter的三個屬性類,QImage類有別於前面三個類,但也是常常可以用QPainter呼叫。
QBrush:但凡要填充一個封閉區域,就用它。包括填充顏色、樣式、材質、紋理甚至圖片都是用它,所以QBrush也就針對的設定了這幾種方法,很好用。
QPen:但凡要劃線,就用它了,也是很容易理解的,線的寬度、顏色、樣式都在這裡設定。
QFont:但凡設計到字型、大小等都由他來設定。
上面程式碼的執行效果如下:
實際上,上述5個物件,基本能夠完成我們所有的基本圖形繪製和展示了,而且也可以實現比較複雜的適時繪圖效果,比如我博文中的例項《QT與arduino互動實現雷達掃描效果》。但是,如果我們需要實現對圖形的複雜操作,比如選擇、編輯、拖放、修改等功能,甚至要實現組態軟體的一些複雜功能,那麼我們有可能就要藉助QT中的另一個繪圖架構Graphics View, 後面根據教程的推進會詳細講解。