1. 程式人生 > >零基礎開始QT繪圖(2)

零基礎開始QT繪圖(2)

上一篇我們學習了在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, 後面根據教程的推進會詳細講解。