1. 程式人生 > >Qt::Painter 詳解

Qt::Painter 詳解

轉自:[QPainter類參考](http://www.kuqin.com/qtdocument/qpainter.html)

QPainter類參考

QPainter類低水平的繪製,例如在視窗部件上。 詳情請見……

繼承了Qt

公有成員

  • enum CoordinateMode { CoordDevice, CoordPainter }
  • QPainter ( const QPaintDevice * pd, bool unclipped = FALSE )
  • QPainter ( const QPaintDevice * pd, const QWidget * copyAttributes, bool unclipped = FALSE )
  • bool begin ( const QPaintDevice * pd, bool unclipped = FALSE )
  • bool begin ( const QPaintDevice * pd, const QWidget * copyAttributes, bool unclipped = FALSE )
  • bool end ()
  • QPaintDevice * device () const
  • QGfx * internalGfx ()
  • void flush ( const QRegion & region, CoordinateMode cm = CoordDevice )
  • void flush ()
  • void save ()
  • QFontMetrics fontMetrics () const
  • QFontInfo
    fontInfo
    () const
  • const QFont & font () const
  • void setFont ( const QFont & font )
  • const QPen & pen () const
  • void setPen ( const QPen & pen )
  • void setPen ( PenStyle style )
  • void setPen ( const QColor & color )
  • const QBrush & brush () const
  • void setBrush ( const QBrush & brush )
  • void setBrush ( BrushStyle style )
  • void setBrush ( const QColor & color )
  • QPoint pos () const
  • RasterOp rasterOp () const
  • const QPoint & brushOrigin () const
  • QRect window () const
  • void setWindow ( const QRect & r )
  • void setWindow ( int x, int y, int w, int h )
  • QRect viewport () const
  • void setViewport ( const QRect & r )
  • void setViewport ( int x, int y, int w, int h )
  • const QWMatrix & worldMatrix () const
  • void setWorldMatrix ( const QWMatrix & m, bool combine = FALSE )
  • void saveWorldMatrix ()  (obsolete)
  • void restoreWorldMatrix ()  (obsolete)
  • void scale ( double sx, double sy )
  • void shear ( double sh, double sv )
  • void rotate ( double a )
  • void translate ( double dx, double dy )
  • QPoint xForm ( const QPoint & pv ) const
  • QRect xForm ( const QRect & rv ) const
  • QPointArray xForm ( const QPointArray & av ) const
  • QPointArray xForm ( const QPointArray & av, int index, int npoints ) const
  • QPoint xFormDev ( const QPoint & pd ) const
  • QRect xFormDev ( const QRect & rd ) const
  • QPointArray xFormDev ( const QPointArray & ad ) const
  • QPointArray xFormDev ( const QPointArray & ad, int index, int npoints ) const
  • QRegion clipRegion ( CoordinateMode m = CoordDevice ) const
  • void setClipRect ( const QRect & r, CoordinateMode m = CoordDevice )
  • void setClipRect ( int x, int y, int w, int h, CoordinateMode m = CoordDevice )
  • void setClipRegion ( const QRegion & rgn, CoordinateMode m = CoordDevice )
  • void drawPoint ( int x, int y )
  • void drawPoint ( const QPoint & p )
  • void drawPoints ( const QPointArray & a, int index = 0, int npoints = -1 )
  • void moveTo ( int x, int y )
  • void moveTo ( const QPoint & p )
  • void lineTo ( int x, int y )
  • void lineTo ( const QPoint & p )
  • void drawLine ( int x1, int y1, int x2, int y2 )
  • void drawLine ( const QPoint & p1, const QPoint & p2 )
  • void drawRect ( int x, int y, int w, int h )
  • void drawRect ( const QRect & r )
  • void drawWinFocusRect ( int x, int y, int w, int h )
  • void drawWinFocusRect ( int x, int y, int w, int h, const QColor & bgColor )
  • void drawWinFocusRect ( const QRect & r, const QColor & bgColor )
  • void drawRoundRect ( int x, int y, int w, int h, int xRnd = 25, int yRnd = 25 )
  • void drawRoundRect ( const QRect & r, int xRnd = 25, int yRnd = 25 )
  • void drawEllipse ( int x, int y, int w, int h )
  • void drawEllipse ( const QRect & r )
  • void drawArc ( int x, int y, int w, int h, int a, int alen )
  • void drawArc ( const QRect & r, int a, int alen )
  • void drawPie ( int x, int y, int w, int h, int a, int alen )
  • void drawPie ( const QRect & r, int a, int alen )
  • void drawChord ( int x, int y, int w, int h, int a, int alen )
  • void drawChord ( const QRect & r, int a, int alen )
  • void drawLineSegments ( const QPointArray & a, int index = 0, int nlines = -1 )
  • void drawPolyline ( const QPointArray & a, int index = 0, int npoints = -1 )
  • void drawPolygon ( const QPointArray & a, bool winding = FALSE, int index = 0, int npoints = -1 )
  • void drawConvexPolygon ( const QPointArray & pa, int index = 0, int npoints = -1 )
  • void drawCubicBezier ( const QPointArray & a, int index = 0 )
  • void drawPixmap ( int x, int y, const QPixmap & pixmap, int sx = 0, int sy = 0, int sw = -1, int sh = -1 )
  • void drawPixmap ( const QPoint & p, const QPixmap & pm, const QRect & sr )
  • void drawPixmap ( const QPoint & p, const QPixmap & pm )
  • void drawPixmap ( const QRect & r, const QPixmap & pm )
  • void drawImage ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, int conversionFlags = 0 )
  • void drawImage ( const QPoint &, const QImage &, const QRect & sr, int conversionFlags = 0 )
  • void drawImage ( const QPoint & p, const QImage & i, int conversion_flags = 0 )
  • void drawImage ( const QRect & r, const QImage & i )
  • void drawTiledPixmap ( int x, int y, int w, int h, const QPixmap & pixmap, int sx = 0, int sy = 0 )
  • void drawTiledPixmap ( const QRect & r, const QPixmap & pm, const QPoint & sp )
  • void drawTiledPixmap ( const QRect & r, const QPixmap & pm )
  • void drawPicture ( const QPicture & pic )  (obsolete)
  • void drawPicture ( int x, int y, const QPicture & pic )
  • void drawPicture ( const QPoint & p, const QPicture & pic )
  • void fillRect ( int x, int y, int w, int h, const QBrush & brush )
  • void fillRect ( const QRect & r, const QBrush & brush )
  • void eraseRect ( int x, int y, int w, int h )
  • void eraseRect ( const QRect & r )
  • void drawText ( int x, int y, const QString &, int len = -1, TextDirection dir = Auto )
  • void drawText ( const QPoint &, const QString &, int len = -1, TextDirection dir = Auto )
  • void drawText ( int x, int y, const QString &, int pos, int len, TextDirection dir = Auto )
  • void drawText ( const QPoint & p, const QString &, int pos, int len, TextDirection dir = Auto )
  • void drawText ( int x, int y, int w, int h, int flags, const QString &, int len = -1, QRect * br = 0, QTextParag ** internal = 0 )
  • void drawText ( const QRect & r, int tf, const QString & str, int len = -1, QRect * brect = 0, QTextParag ** internal = 0 )
  • QRect boundingRect ( int x, int y, int w, int h, int flags, const QString &, int len = -1, QTextParag ** intern = 0 )
  • QRect boundingRect ( const QRect & r, int flags, const QString & str, int len = -1, QTextParag ** internal = 0 )
  • HDC handle () const

靜態公有成員

  • void redirect ( QPaintDevice * pdev, QPaintDevice * replacement )

相關函式

  • void qDrawShadeLine ( QPainter * p, int x1, int y1, int x2, int y2, const QColorGroup & g, bool sunken, int lineWidth, int midLineWidth )
  • void qDrawShadeRect ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool sunken, int lineWidth, int midLineWidth, const QBrush * fill )
  • void qDrawShadePanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool sunken, int lineWidth, const QBrush * fill )
  • void qDrawWinButton ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool sunken, const QBrush * fill )
  • void qDrawWinPanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool sunken, const QBrush * fill )
  • void qDrawPlainRect ( QPainter * p, int x, int y, int w, int h, const QColor & c, int lineWidth, const QBrush * fill )

詳細描述

QPainter類低水平的繪製,例如在視窗部件上。

繪製工具為做到絕大部分繪製圖形使用者介面程式的需要提供了高度優化的函式。QPainter可以繪製從簡單的直線到像餅圖和絃這樣的複雜形狀。它也可以繪製排列的文字和畫素對映。通常,它在一個“自然的”座標系統中繪製,但是它也可以在視和世界轉換中做到這些。

繪圖工具的典型用法是:

  • 構造一個繪圖工具。
  • 設定畫筆、畫刷等等。
  • 繪製。
  • 銷燬這個繪圖工具。

絕大多數情況下,所有這些是在一個繪製事件中完成的。(實際上,99%的QPainter使用是在QWidget::paintEvent()的重新實現中,並且繪製工具已經為這種用法高度優化了。)這裡是一個非常簡單的例項:

    void SimpleExampleWidget::paintEvent()
    {
        QPainter paint( this );
        paint.setPen( Qt::blue );
        paint.drawText( rect(), AlignCenter, "The Text" );
    }
    

使用方法很簡單並且這裡有你可以使用的許多設定:

  • font()是當前設定的字型。如果你設定一個不可用的字型,Qt會找到一個相近的匹配。實際上,font()返回你使用setFont() 所設定的東西並且fontInfo()返回你實際使用的字型(這也許是相同的)。
  • brush()是當前設定的畫刷,用來填充例如圓的顏色或者調色盤。
  • pen()是當前設定的畫筆,用來畫線或者邊緣的顏色或者點畫。
  • 僅僅當backgroundMode()為Opaque並且pen()是一個點畫的時候backgroundColor()才適用,它描述了在點畫中背景畫素的顏色。
  • rasterOp()是畫素繪製和已經存在的畫素是如何相互作用的。
  • brushOrigin()是平鋪的畫刷的原點,通常是視窗的原點。
  • viewport()、window()、worldMatrix()和很多其它的構成了繪製工具的座標轉換系統。關於這個的解釋請參考座標系統或者參考下面有關這些函式的非常簡要的概述。
  • clipping()是指繪製工具是否裁剪。(繪製裝置也裁剪。)如果繪製工具裁剪,它裁剪到clipRegion()。
  • pos()是當前位置,通過moveTo()設定並且通過lineTo()使用。

注意這些設定中的一些會映象到一些繪製裝置的設定中,例如QWidget::font()。QPainter::begin()(或者QPainter的建構函式)從繪製裝置中複製這些屬性。呼叫,例如QWidget::setFont()直到繪製工具開始在它上面繪製才會生效。

把所有的這些設定儲存到內部棧中,restore()把它們彈出來。

這裡有繪製畫素對映/影象的函式,名為drawPixmap()、drawImage()和drawTiledPixmap()。drawPixmap()和drawImage()產生同樣的結果,除了drawPixmap()在螢幕上更快一些並且drawImage()在QPrinterQPicture上更快並且有時更好。

使用drawText()可以完成文字繪製,並且當你需要良好的定位,boundingRect()告訴你哪裡是給定的drawText()命令將要繪製的。

這裡有一個drawPicture()函式,用來使用這個繪製工具繪製整個QPicture的內容。drawPicture()是唯一忽視所有繪製工具設定的函式:QPicture有它自己的設定。

通常,QPainter在裝置自己的座標系統(通常是畫素)上操作,但是QPainter也很好地支援座標轉換。關於更通用的概述和簡單例項請參考座標系統

最常用到的函式是scale()、rotate()、translate()和shear(),所有這些在worldMatrix()上操作。setWorldMatrix()可以替換或者新增到當前設定的worldMatrix()。

setViewport()設定QPainter操作的矩形。預設是整個裝置,這通常就很好了,除了在印表機上。setWindow()設定座標系統,它是被對映到viewport()的矩形。在window()中繪製的東西最終會在viewport()中。視窗的預設就是和視口一樣,並且如果你沒有使用轉換,它們會被優化,贏得一點點速度。

在所有座標轉換完成之後,QPainter能夠把繪製裁剪到一個任意的矩形或者區域。如果QPainter裁剪了,hasClipping()為真並且clipRegion()返回裁剪區域。你可以使用setClipRegion()或setClipRect()來設定它。注意裁剪是很慢的。它是完全依賴系統的,但是單憑經驗的方法,你可以假設繪製的速度與裁剪區域中的矩形數量成反比。

在QPainter的裁剪之後,繪製裝置也可以被裁剪。例如,絕大多數視窗部件按子視窗部件的畫素裁剪並且絕大多數印表機按接近紙的邊緣裁剪。這些另外的裁剪不會受clipRegion()或hasClipping()的返回值影響。

QPainter也包括一些比較少用到的函式,它們在當它們被需要的時候是非常有用的。

isActive()指出繪製工具是否是啟用的。begin()(和最常用的建構函式)使它啟用。end()(和解構函式)釋放它們。如果繪製工具是啟用的,device()返回繪製工具在哪個繪製裝置上繪製。

有時讓其它什麼在一個不平常的QPaintDevice上繪製是人們想要的。QPainter支援一個靜態函式來做這些,redirect()。我們建議不要使用它,但是對於一些老手這是完美的。

警告:注意QPainter不會試圖在底層視窗系統的左邊限制周圍工作。座標在+/-4000時,一些平臺的行為可能就不正確了。

成員型別文件

QPainter::CoordinateMode

  • QPainter::CoordDevice
  • QPainter::CoordPainter

QPainter::TextDirection

  • QPainter::Auto
  • QPainter::RTL - 從右到左
  • QPainter::LTR - 從左到右

成員函式文件

QPainter::QPainter ()

構造繪製工具。

注意所有繪製工具的設定(setPen、setBrush等等)在當begin()被呼叫時會被重新設定為預設值。

請參考begin()和end()。

QPainter::QPainter ( const QPaintDevice * pd, bool unclipped = FALSE )

構造一個立即開始在繪製裝置pd繪製的繪製工具。如果unclipped為真,依賴於底層圖形系統,繪製工具將在繪製裝置的子物件上繪製。

這個建構函式對短期的繪製工具是很方便的,例如,在一個繪製事件中並且也該被立即使用。建構函式為你呼叫begin()並且QPainter的解構函式會自動呼叫end()。

這是使用begin()和end()的例項:

        void MyWidget::paintEvent( QPaintEvent * )
        {
            QPainter p;
            p.begin( this );
            p.drawLine( ... );  // 繪製程式碼
            p.end();
        }
    

使用這個建構函式的相同例項:

        void MyWidget::paintEvent( QPaintEvent * )
        {
            QPainter p( this );
            p.drawLine( ... );  // 繪製程式碼
        }
    

請參考begin()和end()。

QPainter::QPainter ( const QPaintDevice * pd, const QWidget * copyAttributes, bool unclipped = FALSE )

構造一個立即開始在繪製裝置pd繪製的繪製工具,預設引數來自於copyAttributes。如果unclipped為真,依賴於底層圖形系統,繪製工具將在繪製裝置的子物件上繪製(儘管這個不是在所有平臺上都被支援)。

請參考begin()。

QPainter::~QPainter ()

銷燬繪製工具。

const QColor & QPainter::backgroundColor () const

返回當前背景色。

BGMode QPainter::backgroundMode () const

返回當前背景模式。

bool QPainter::begin ( const QPaintDevice * pd, bool unclipped = FALSE )

開始在繪製裝置pd上繪製並且如果成功返回真,否則返回假。如果unclipped為真,繪製在繪製裝置的邊緣將不會被裁剪(儘管這不是在所有平臺上被支援)。

發生的錯誤是嚴重的問題,例如這些:

        p->begin( 0 ); // 不可能——繪製裝置不能為0

        QPixmap pm( 0, 0 );
        p->begin( pm ); // 不可能——pm.isNull();

        p->begin( myWidget );
        p2->begin( myWidget ); // 不可能——在同一時間只能有一個繪製工具
    

注意絕大部分時間,你可以使用一個建構函式來代替begin(),並且end()會在解構函式中被自動完成。

警告:在同一時間繪製裝置上只能有一個繪製工具。

請參考end()和flush()。

bool QPainter::begin ( const QPaintDevice * pd, const QWidget * copyAttributes, bool unclipped = FALSE )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

這個版本在繪製裝置pd上開啟繪製工具並且從copyAttributes設定初始畫筆、背景顏色和字型,當unclipped為真,在繪製裝置的子物件上進行繪製。這等於:

        QPainter p;
        p.begin( pd );
        p.setPen( copyAttributes->foregroundColor() );
        p.setBackgroundColor( copyAttributes->backgroundColor() );
        p.setFont( copyAttributes->font() );
    

這個開始函式便於雙重緩衝。當你在一個畫素對映上繪製,而不是直接在視窗部件上繪製(稍後用bitBlt把這個畫素對映放到視窗部件中),你將需要設定視窗部件的字型等等。這個函式正確地做到了這些。

例項:

        void MyWidget::paintEvent( QPaintEvent * )
        {
            QPixmap pm(size());
            QPainter p;
            p.begin(&pm, this);
            // ……繪製操作可能有閃爍……
            p.end();
            bitBlt(this, 0, 0, &pm);
        }
    

請參考end()。

QRect QPainter::boundingRect ( int x, int y, int w, int h, int flags, const QString &, int len = -1, QTextParag ** intern = 0 )

返回相對應的drawText()函式所要列印的對齊的文字的邊界矩形,如果len>-1,使用字串的len個字元,或者如果len為-1,使用整個字串。繪製已經相應的邊界矩形,由點(x, y)以及寬w和高h來約束。

flags引數是下列標記的位或運算結果:

如果幾種同一方向上(水平或垂直)的對齊標記一起使用,對齊結果是不確定的。

intern引數不應該被使用。

QRect QPainter::boundingRect ( const QRect & r, int flags, const QString & str, int len = -1, QTextParag ** internal = 0 )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

返回相對應的drawText()函式所要列印的對齊的文字的邊界矩形,如果len>-1,使用字串的len個字元,或者如果len為-1,使用整個字串。繪製已經相應的邊界矩形,由矩形r來約束。

intern引數不應該被使用。

const QBrush & QPainter::brush () const

返回繪製工具的當前畫刷。

const QPoint & QPainter::brushOrigin () const

返回畫刷原點的當前設定。

QRegion QPainter::clipRegion ( CoordinateMode m = CoordDevice ) const

返回當前設定的裁剪區域。注意裁剪區域是在物理裝置座標內給定的並且如果mCoordDevice(預設),不服從任何座標變換。如果mCoordPainter,返回的區域是在模型座標中。

QPaintDevice * QPainter::device () const

返回繪製工具當前正在繪製的繪製裝置,如果繪製工具沒有啟用,返回0。

void QPainter::drawArc ( int x, int y, int w, int h, int a, int alen )

繪製由矩形(x, y, w, h)確定的弧,開始角度為a,並且弧長為alen

角度aalen是1/16度,也就是說一個完整的圓等於5760(16*360)。正數的aalen意味著逆時針方向並且負值意味著順時針方向。0度在3點的時鐘位置。

例項:

        QPainter p( myWidget );
        p.drawArc( 10,10, 70,100, 100*16, 160*16 ); // 繪製一個“(”這樣的弧
    

void QPainter::drawArc ( const QRect & r, int a, int alen )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製由矩形r確定的弧,開始角度為a,並且弧長為alen

void QPainter::drawChord ( int x, int y, int w, int h, int a, int alen )

繪製由矩形(x, y, w, h)確定的弦,開始角度為a,並且弧長為alen

這個弦由當前brush()填充。

角度aalen是1/16度,也就是說一個完整的圓等於5760(16*360)。正數的aalen意味著逆時針方向並且負值意味著順時針方向。0度在3點的時鐘位置。

void QPainter::drawChord ( const QRect & r, int a, int alen )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製由矩形r確定的弦,開始角度為a,並且弧長為alen

void QPainter::drawConvexPolygon ( const QPointArray & pa, int index = 0, int npoints = -1 )

繪製pa中從pa[index]開始(index預設為0)的npoints個點確定的凸多邊形。

如果提供的多邊形不是凸的,結果是不確定的。

在一些平臺上(例如X視窗),這個比drawPolygon()更快。

void QPainter::drawCubicBezier ( const QPointArray & a, int index = 0 )

繪製a中從a[index]開始(index預設為0)的控制點確定的三次貝塞爾曲線。

a[index + 3]之後的控制點被忽略。如果沒有足夠的控制點,就什麼也不發生。

void QPainter::drawEllipse ( int x, int y, int w, int h )

繪製中心在(x + w/2, y + h/2)並且大小為(w, h)的橢圓。

void QPainter::drawEllipse ( const QRect & r )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製在r內適合的的橢圓。

void QPainter::drawImage ( int x, int y, const QImage & image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, int conversionFlags = 0 )

在(x, y)點繪製從(sx, sy)開始,swsh分別為寬高的畫素區域,如果圖片需要被轉換為畫素對映,使用conversionFlagsconversionFlags的預設值為0,關於其它值有什麼作用請參考convertFromImage()。

如果device()是QPixmapQWidget,這個函式可以把image轉換為畫素對映然後再繪製它;如果device()是QPrinterQPicture,它會直接繪製它。

當在QPrinter上繪製時,影象中的alpha掩碼將被忽略。

void QPainter::drawImage ( const QPoint &, const QImage &, const QRect & sr, int conversionFlags = 0 )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

在給定的點繪製圖像中的矩形sr

void QPainter::drawImage ( const QPoint & p, const QImage & i, int conversion_flags = 0 )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

在點p繪製圖像i

如果影象需要被修改來適應低解析度的結果(例如從32位轉換為8位),使用conversion_flags來指定你希望發生什麼。

void QPainter::drawImage ( const QRect & r, const QImage & i )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

在矩形r中繪製圖像i。如果影象和矩形的大小不同,影象將被伸縮來適應矩形。

void QPainter::drawLine ( int x1, int y1, int x2, int y2 )

繪製從(x1, y1)到(x2, y2)的直線並且設定當前畫筆位置為(x2, y2)。

請參考pen()。

void QPainter::drawLine ( const QPoint & p1, const QPoint & p2 )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製從點p1到點p2的直線。

void QPainter::drawLineSegments ( const QPointArray & a, int index = 0, int nlines = -1 )

繪製a中,從a[index]開始(index預設為0)的點確定的nlines條分隔的線。如果nlines為-1(預設),直到陣列結束所有的點都被使用(也就是繪製(a.size()-index)/2個線)。

繪製的第一條線是從a[index]a[index+1]。繪製的第二條線是從a[index+2]a[index+3],等等。

void QPainter::drawPicture ( int x, int y, const QPicture & pic )

在(x, y)重放圖片pic

當這個函式被呼叫時,如果(x, y) = (0, 0),它就和QPicture::play()一樣了。

void QPainter::drawPicture ( const QPicture & pic )

這個函式是廢棄的。它的提供只是為了保證舊程式碼能夠工作。我們強烈建議在新程式碼中不要使用它。

void QPainter::drawPicture ( const QPoint & p, const QPicture & pic )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

在點p繪製圖片pic

void QPainter::drawPie ( int x, int y, int w, int h, int a, int alen )

繪製由矩形(x, y, w, h)確定的餅圖,開始角度為a,並且弧長為alen

這個餅圖由當前的brush()填充。

角度aalen是1/16度,也就是說一個完整的圓等於5760(16*360)。正數的aalen意味著逆時針方向並且負值意味著順時針方向。0度在3點的時鐘位置。

void QPainter::drawPie ( const QRect & r, int a, int alen )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製由矩形r確定的餅圖,開始角度為a,並且弧長為alen

void QPainter::drawPixmap ( int x, int y, const QPixmap & pixmap, int sx = 0, int sy = 0, int sw = -1, int sh = -1 )

通過把pixmap的一部分複製到繪製裝置中,在(x, y)繪製一個畫素對映。

(x, y)指定了要被繪製的繪製裝置的左上點。(sx, sy)指定了要被繪製的pixmap中的左上點。預設為(0, 0)。

(sw, sh)指定了要被繪製的pixmap的大小。預設(-1, -1),意思是一直到畫素對映的右下。

當在QPrinter上繪製時,當前畫素對映的遮蔽或者它的alpha通道被忽略。

void QPainter::drawPixmap ( const QPoint & p, const QPixmap & pm, const QRect & sr )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製畫素對映pm中的矩形sr,原點就放在點p處。

void QPainter::drawPixmap ( const QPoint & p, const QPixmap & pm )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製畫素對映pm,原點就放在點p處。

void QPainter::drawPixmap ( const QRect & r, const QPixmap & pm )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

在矩形r中繪製畫素對映pm。如果畫素對映和矩形大小不同,畫素對映被拉伸來適合這個矩形。

void QPainter::drawPoint ( int x, int y )

使用當前畫筆在(x, y)繪製一個單一點。

請參考QPen

void QPainter::drawPoint ( const QPoint & p )

這是一個過載成員函式,提供了方便。它的行為基本上和上面的函式相同。

繪製點p

void QPainter::drawPoints ( const QPointArray & a, int index = 0, int npoints = -1 )

使用當前畫筆繪製一組點a

如果index為非零(預設為0),只有從index開始的點被繪製。如果npoints為負數(預設),從index開始剩餘的所有點都被繪製。如果index為0或者正數,則index個點被繪製。

void QPainter::drawPolygon ( const QPointArray & a, bool winding = FALSE, int index = 0, int npoints = -1 )

繪製a中,從a[index]開始(index預設為0)的npoints個點確定的多邊形。

如果npoints為-1(預設),直到陣列的最後的所有點都被使用(也就是說a.size()-index條線確定的多邊形)。

第一個點總是被連線到最後一個點上。

多邊形被當前brush()填充。如果winding為真,多邊形會被使用纏繞填充演算法(winding fill algorithm)填充。如果winding為假,多邊形會被使用奇偶(交錯)填充演算法(even-odd (alternative) fill algorithm)填充。

void QPainter::drawPolyline ( const QPointArray & a, int index = 0, int npoints = -1 )

繪製a中,從a[index]開始(index預設為0)的npoints個點確定的多邊形。

如果npoints為-1(預設),直到陣列的最後的所有點都被使用(也就是說a.size()-index條線確定的多邊形)。

void QPainter::drawRect ( int x, int y, int w, int h )

繪製左上角在(x, y)並且寬為w、高為h的矩形。

void QPainter::drawRect ( const QRect & r )