[Qt教程] 第14篇 2D绘图(四)绘制路径
生活随笔
收集整理的這篇文章主要介紹了
[Qt教程] 第14篇 2D绘图(四)绘制路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[Qt教程]?第14篇 2D繪圖(四)繪制路徑
??|?查看: 611|?回復: 0| 繪制路徑 版權聲明 該文章原創于Qter開源社區(www.qter.org),作者yafeilinux,轉載請注明出處! 導語 如果要繪制一個復雜的圖形,尤其是要重復繪制這樣的圖形,那么可以使用QPainterPath類,然后使用QPainter::drawPath()來進行繪制。QPainterPath類為繪制操作提供了一個容器,可以用來創建圖形并且重復使用。一個繪圖路徑就是由多個矩形、橢圓、線條或者曲線等組成的對象,一個路徑可以是封閉的,例如矩形和橢圓;也可以是非封閉的,例如線條和曲線。 環境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目錄 一、簡單的使用路徑二、復制圖形三、繪制圖形時的當前位置 正文 一、簡單的使用路徑 依然在前面的項目中進行講解。更改paintEvent()函數如下:void?MainWindow::paintEvent(QPaintEvent?*){? ??QPainterPath?path;? ??path.addEllipse(100,?100,?50,?50);? ??path.lineTo(200,?200);? ??QPainter?painter(this);? ??painter.setPen(Qt::blue);? ??painter.setBrush(Qt::red);? ??painter.drawPath(path);} 當創建一個QPainterPath對象后,可以使用lineTo()、arcTo()、cubicTo()和quadTo()等函數將直線或者曲線添加到路徑中。運行程序,效果如下圖所示。 二、復制圖形 如果只是簡單的將幾個圖形拼接在一起,其實完全沒有必要用路徑,之所以要引入路徑,就是因為它的一個非常有用的功能:復制圖形路徑。我們在painEvent()函數中繼續添加下面幾行代碼:QPainterPath?path2;path2.addPath(path);path2.translate(100,0);painter.drawPath(path2);? ??現在運行程序,效果如下圖所示。 可以看到,對于已經繪制好的路徑,可以非常簡單的進行重復繪制。 三、繪制圖形時的當前位置 1.我們先來看個例子,將paintEvent()函數更改如下: void?MainWindow::paintEvent(QPaintEvent?*){? ??QPainterPath?path;? ??path.lineTo(100,100);? ??path.lineTo(200,100);? ??QPainter?painter(this);? ??painter.drawPath(path);}程序運行效果如下圖所示。 可以看到,創建路徑后,默認是從(0, 0)點開始繪制的,當繪制完第一條直線后當前位置是(100, 100)點,從這里開始繪制第二條直線。繪制完第二條直線后,當前位置是(200,100)。 2.再來看一個例子。將paintEvent()函數的內容更改如下:void?MainWindow::paintEvent(QPaintEvent?*){? ??QPainterPath?path;? ??path.addRect(50,?50,?40,?40);? ??path.lineTo(200,?200);? ??QPainter?painter(this);? ??painter.drawPath(path);}運行程序,效果如下圖所示。 可以發現,當繪制完矩形后,當前位置在矩形的左上角頂點,然后從這里開始繪制后面的直線。 4.我們也可以使用moveTo()函數來改變當前點的位置。例如將上面的代碼更改為: void?MainWindow::paintEvent(QPaintEvent?*){? ??QPainterPath?path;? ??path.addRect(50,?50,?40,?40);? ??//移動到(100, 100)點? ??path.moveTo(100,?100);? ??path.lineTo(200,?200);? ??QPainter?painter(this);? ??painter.drawPath(path);} 這樣當繪制完矩形以后,就會移動到(100, 100)點進行后面的繪制。程序運行效果如下圖所示。 結語 這里只講解了QPainterPath最基本的應用,使用好這個類可以繪制出很多特效圖形。如果繪制的兩個圖形有交集,那么還要涉及到相交部分的填充規則問題,這部分內容可以參考《Qt Creator快速入門》第10章的相關內容。 涉及到的源碼下載:??painter_1.zip?? |
總結
以上是生活随笔為你收集整理的[Qt教程] 第14篇 2D绘图(四)绘制路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Qt教程] 第13篇 2D绘图(三)绘
- 下一篇: [Qt教程] 第15篇 2D绘图(五)绘