欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:開發(fā)語言 【Qt】繪圖API

柚子快報激活碼778899分享:開發(fā)語言 【Qt】繪圖API

http://yzkb.51969.com/

基本概念?

在前面學習Qt過程中的各種控件,其本質(zhì)上都是畫出來的,這些都是比較常用的東西,Qt已經(jīng)畫好了,拿過來就可以使用,但是在實際開發(fā)過程中,現(xiàn)有的控件可能無法滿足需求,就需要自己手動diy 一些控件/效果。

Qt 提供的 繪圖 API 就是為了解決上述問題。Qt 提供了畫圖相關(guān)的 API, 可以允許我們在窗?上繪制任意的圖形形狀, 來完成更復(fù)雜的界?設(shè)計。

所謂的 "控件" , 本質(zhì)上也是通過畫圖的?式畫上去的.

畫圖 API 和 控件 之間的關(guān)系, 可以類?成機器指令和?級語?之間的關(guān)系.

控件是對畫圖 API 的進?步封裝; 畫圖 API 是控件的底層實現(xiàn).

繪圖API核心類

類說明

QPainter

"繪畫者" 或者 "畫家".

?來繪圖的對象, 提供了?系列 drawXXX ?法, 可以允許我們繪制各種圖形.

QPaintDevice

"畫板".

描述了 QPainter 把圖形畫到哪個對象上. 像咱們之前?過的 QWidget 也是?種 QPaintDevice (QWidget 是 QPaintDevice 的?類)

QPen

"畫筆".

描述了 QPainter 畫出來的線是什么樣的.

QBrush

"畫刷".

描述了 QPainter 填充?個區(qū)域是什么樣的.

繪圖 API 的使?, ?般不會在 QWidget 的構(gòu)造函數(shù)中使?, ?是要放到

paintEvent

事件中

paintEvent 會在以下情況下被觸發(fā):

控件?次創(chuàng)建(例如:往QWidget上畫畫,QWidget創(chuàng)建之前,畫的東西不會生效,而當首次創(chuàng)建QWidget就能顯示出畫的東西來)控件被遮擋, 再解除遮擋(這個時機進行繪制也是非常重要的,否則繪制的內(nèi)容就會在被遮擋之后消失)窗?最?化, 再恢復(fù)

控件??發(fā)?變化時

主動調(diào)? repaint() 或者 update() ?法. (這兩個?法都是 QWidget 的?法)

因此, 如果把繪圖 api 放到構(gòu)造函數(shù)中調(diào)?, 那么?旦出現(xiàn)上述的情況, 界?的繪制效果就?法確保符合預(yù)期了。

例子:繪制線段、矩形、圓形

(1)在widget.h文件中聲明繪制事件

(2)實例化對象

這里定義在棧上的變量,不需要考慮釋放的問題,此處的指定的this,不是父對象,而是指定繪制的設(shè)備(往什么東西上畫)

?(3)繪制線段

void drawLine(const QPoint &p1, const QPoint &p2);

參數(shù):

p1:繪制起點坐標p2:繪制終點坐標

void drawLine ( int x1, int y1, int x2, int y2 );

參數(shù):

x1,y1:繪制起點坐標 x2,y2:繪制終點坐標

(4)繪制矩形

void QPainter::drawRect(int

x

, int

y

, int

width

, int

height

)

;

參數(shù):

x:窗?橫坐標; y:窗?縱坐標; width:所繪制矩形的寬度; height:所繪制矩形的?度

(5)繪制圓形

void QPainter::drawEllipse(const QPoint &

center

, int

rx

, int

ry

)

參數(shù):

center:中?點坐標 rx:橫坐標 ry:縱坐標

?

繪制圓形的寬度和高度是外接矩形的寬度和高度

例子:繪制文字(顯示文字)

QPainter類 中不僅提供了繪制圖形的功能,還可以使? QPainter::drawText() 函數(shù)來繪制?字,也可以使?QPainter::setFont() 設(shè)置字體等信息。

注意理解這里的坐標位置,此處的0橫坐標,表示的是文字最左側(cè)的位置;此處的100縱坐標,表示的是文字的基線位置(baseline)。

基線:指的是拼音格中的第三根線就是基線。

例子:設(shè)置畫筆

通過畫筆對象QPen設(shè)置繪制的形狀的顏色信息、粗細、樣式。

QPainter 在繪制時,是有?個默認的畫筆的。在使?時也可以?定義畫筆。在 Qt 中,QPen類中定義了 QPainter 應(yīng)該如何繪制形狀、線條和輪廓。同時通過 QPen類 可以設(shè)置畫筆的線寬、顏?、樣式、畫刷等。

畫筆的顏?可以在實例化畫筆對象時進?設(shè)置,畫筆的寬度是通過 setWidth() ?法進?設(shè)置,畫筆的?格是通過setStyle()?法進?設(shè)置,設(shè)置畫刷主要是通過 setBrush() ?法。

設(shè)置畫筆顏?:QPen::QPen(const QColor &color) 畫筆的顏?主要是通過 QColor 類設(shè)置;設(shè)置畫筆寬度:void QPen::setWidth(int width)設(shè)置畫筆?格:void QPen::setStyle(Qt::PenStyle style)

畫筆的風格有:

(1)實例化畫家

(2)設(shè)置畫筆

(3)畫家使用畫筆

(4)執(zhí)行程序?

(5)全部代碼

例子:設(shè)置畫刷

在 Qt 中,畫刷是使? QBrush類 來描述,畫刷?多?于填充。QBrush定義了QPainter的填充模式,具有樣式、顏?、漸變以及紋理等屬性。

畫刷的格式中定義了填充的樣式,使? Qt::BrushStyle 枚舉,默認值是 Qt::NoBrush,也就是不進?任何填充??梢酝ㄟ^ Qt 助?查找畫刷的格式。如下圖?:

設(shè)置畫刷主要通過

void QPen::setBrush(const QBrush &

brush

) ?法,其參數(shù)為畫刷的格式。

例子:繪制圖片

Qt 提供了四個類來處理圖像數(shù)據(jù):QImage、QPixmap、QBitmap 和 QPicture,它們都是常?的繪圖設(shè)備。其中QImage主要?來進? I/O 處理,它對 I/O 處理操作進?了優(yōu)化,?且可以?來直接訪問和操作像素;QPixmap 主要?來在屏幕上顯?圖像,它對在屏幕上顯?圖像進?了優(yōu)化;QBitmap是 QPixmap 的?類,?來處理顏?深度為1的圖像,即只能顯???兩種顏?;QPicture ?來記錄并重演 QPainter 命令。

通過QPixmap這個類,就可以表示一個圖片

(1)使用qrc添加圖片

(2)設(shè)置圖片?

(3)程序運行

例子:旋轉(zhuǎn)圖片

圖片旋轉(zhuǎn),本質(zhì)上是把QPainter對象進行了旋轉(zhuǎn),繪制出來的內(nèi)容也就產(chǎn)生了旋轉(zhuǎn)。

painter.ratate(180)是按著(0,0)坐標系原點進行的旋轉(zhuǎn)。

為了讓圖片顯示出來,可以把坐標系原點(Painter 的起點)平移一些。

關(guān)于幾種圖片類的介紹

在QPixmap的官方文檔中:?

在 Qt 中還存在下列三個?較特殊的繪圖設(shè)備. 此處也簡要介紹.

QPixmap ?于在顯?器上顯?圖?. QImage ?于對圖?進?像素級修改. QPicture ?于對 QPainter 的?系列操作進?存檔.

QPixmap核?特性:

使? QPainter 直接在上?進?繪制圖形. 通過?件路徑加載并顯?圖?. 搭配 QPainter 的 drawPixmap()函數(shù), 可以把這個圖?繪制到?個 QLabel、QPushButton 等控件上. 和系統(tǒng)/顯?設(shè)備強相關(guān), 不同系統(tǒng)/顯?設(shè)備下, QPixmap 的顯?可能會有所差別.

QImage 的核?特性:

使? QPainter 直接在上?進?繪制圖形. 通過?件路徑加載并顯?圖?. 能夠針對圖?進?像素級別的操作(操作某個指定的像素). 獨?于硬件的繪制系統(tǒng), 能夠在不同系統(tǒng)之上提供?致的顯?.

QPicture 核?特性:

使? QPainter 直接在上?進?繪制圖形. 通過?件路徑加載并顯?圖?. 能夠記錄 QPainter 的操作步驟. 獨?于硬件的繪制系統(tǒng), 能夠在不同系統(tǒng)之上提供?致的顯?.

【注意】QPicture 加載的必須是??的存檔?件, ?不能是任意的 png, jpg 等圖??件.

柚子快報激活碼778899分享:開發(fā)語言 【Qt】繪圖API

http://yzkb.51969.com/

推薦文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19468856.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄