pos機(jī)原理圖設(shè)計(jì),Qt繪圖原理詳解

 新聞資訊2  |   2023-05-25 13:02  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)原理圖設(shè)計(jì),Qt繪圖原理詳解的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)原理圖設(shè)計(jì)的問題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)原理圖設(shè)計(jì)

pos機(jī)原理圖設(shè)計(jì)

1、QT繪制事件

當(dāng)應(yīng)用程序收到繪制事件時(shí),就會(huì)調(diào)用QWidget::paintEvent(),該函數(shù)就是繪制窗口的地方。

有兩種方法要求重繪一個(gè)窗口

update() --把重繪事件添加到事件隊(duì)列中

重復(fù)調(diào)用update()會(huì)被Qt合并為一次

不會(huì)產(chǎn)生圖像的閃爍

可帶參數(shù)指定重繪某個(gè)區(qū)域

repaint() --立即產(chǎn)生繪制事件

一般情況下不推薦使用此方法

只使用在需要立即重繪的特效情況下

可帶參數(shù)指定重繪某個(gè)區(qū)域

為了處理繪制事件,只需要重寫paintEvent()函數(shù),并在該函數(shù)中實(shí)例化一個(gè)QPainter對(duì)象進(jìn)行繪制。

class MyWidget : public QWidget{ ...protected: void paintEvent(QPaintEvent *);}void MyWidget::paintEvent(QPaintEvent *event){ QPainter painter(this); ...} QT開發(fā)交流+貲料君羊:714620761

基本繪制

QPainter類提供繪制操作,其構(gòu)造函數(shù)原型為:

QPainter(QPaintDevice *device);

QPaintDevice代表繪制2D圖像的畫布;

如下繼承QPaintDevice的類對(duì)象都可用于QPainter繪制

QWidget、QImage、QPixmap、QPicture、QPrinter、QSvgGenerator、QGLPixelBuffer、QGLFrameBufferObject2、Qt 2D繪圖

QPainter

線和輪廓都可以用畫筆(QPen)進(jìn)行繪制,用畫刷(QBrush)進(jìn)行填充;

字體使用QFont類定義,當(dāng)繪制文字時(shí),Qt使用指定字體的屬性,如果沒有匹配的字體,Qt將使用最接近的字體;

通常情況下,QPainter以默認(rèn)的坐標(biāo)系統(tǒng)進(jìn)行繪制,也可以用QMatrix類對(duì)坐標(biāo)進(jìn)行變換;

當(dāng)繪制是,可以使用QPainter::RenderHint來告訴繪圖引擎是否棄用反鋸齒功能使圖變得平滑;

QPainter::RenderHint的可取值:

QPainter::Antialiasing:告訴繪圖引擎應(yīng)該在可能的情況下進(jìn)行邊的反鋸齒繪制

QPainter::TextAntialiasing:盡可能的情況下文字的反鋸齒繪制

QPainter::SmoothPixmapTransform:使用平滑的pixmap變換算法(雙線性插值算法),而不是近鄰插值算法;

QPainter的繪圖函數(shù)總結(jié)如下:

3、畫筆

畫筆的屬性包括線型、線寬、顏色等。畫筆屬性可以在構(gòu)造函數(shù)中指定,也可以使用setStyle(),setwidth="360px",height="auto" />

Qt中,使用Qt::PenStyle定義了6中畫筆風(fēng)格,分別是:

還可以自定義線風(fēng)格(Qt::CustomDashLine),需要使用QPen的setDashPattern()函數(shù)來設(shè)定自定義風(fēng)格。

端點(diǎn)風(fēng)格(cap style)

端點(diǎn)風(fēng)格決定了線的端點(diǎn)樣式,只對(duì)線寬大于1的線有效。

Qt定義了三種端點(diǎn)風(fēng)格用枚舉類型Qt::PenCapStyle表示,分別為:

連接風(fēng)格(join style)

連接風(fēng)格是兩條線如何連接,連接風(fēng)格對(duì)線寬大于等于1的線有效;

Qt定義了四種連接方式,用枚舉類型Qt::PenStyle表示。分別是:

4、畫刷

在Qt中圖形使用QBrush進(jìn)行填充,畫刷包括填充顏色和風(fēng)格(填充模式)。

在Qt中,顏色使用QColor類表示,QColor支持RGB、HSV、CMYK顏色模型。QColor還支持alpha混合的輪廓和填充。

RGB是面向硬件的模型。顏色有紅綠藍(lán)三種基色混合而成。

HSV/HSL模型比較符合人對(duì)顏色的感覺,由色調(diào)(0-359),飽和度(0-255),亮度(0-255)組成,主要用于顏色選擇器。

CMYK由青、洋紅、黃、黑四種基色組成。主要用于打印機(jī)等硬件拷貝設(shè)備上。每個(gè)顏色分量的取值是0-255。

基本模式填充包括有各種點(diǎn)、線組合的模式。

QColor

QColor的構(gòu)造函數(shù):QColor(int r,int g,int b,int a)

其中 參數(shù)a(alpha)是控制透明度的,取值范圍為0-255;0為完全透明,255為不透明。

顏色還可以使用如下函數(shù)進(jìn)行微調(diào)

QColor::lighter(int factor)QColor::darker(int factor)

QRgb

QRgb類可以用于保存顏色值,可與QColor相互轉(zhuǎn)換獲取32-bit的RGB顏色值+alpha值。

創(chuàng)建新顏色

QRgb orange = qRgb(255,127,0);QRgb overlay = qRgb(255,0,0,100);

獲取單獨(dú)某個(gè)顏色值:qRed,qGreen,qBlue,qAlpha

int red = qRed(orange);

獲取灰度值

int gray = qGray(orange);

模式畫刷

模式化畫刷構(gòu)造函數(shù)QBrush(const QColor *color,Qt::BrushStyle style),具體見下圖:

5、漸變填充

Qt提供了漸變填充的畫刷,漸變填充包括兩個(gè)要素:顏色的變化和路徑的變化

顏色變化可以指定從一種顏色漸變到另外一種顏色。

路徑變化指在路徑上指定一些點(diǎn)的顏色進(jìn)行分段漸變。

Qt中,提供了三種漸變填充

線性(QLinearGradient)

圓形(QRadialGradient)

圓錐漸變(QConicalGradient)

所有的類都從QGradient類繼承

構(gòu)造漸變填充的畫刷

QBrush b = QBrush(QRadialGradient(...));

填充設(shè)置

從圖形的起點(diǎn)到終點(diǎn),以從0至1的比例漸變填充

QGradient::setColorAt(qreal pos,QColor color);

完成0-1范圍的填充后,后續(xù)顏色鋪開的方式可以不同,通過setSpread()函數(shù)來設(shè)置

1、線性漸變填充

線性漸變填充指定兩個(gè)控制點(diǎn),畫刷在兩個(gè)控制點(diǎn)之間進(jìn)行顏色插值。

通過創(chuàng)建QLinearGradient對(duì)象來設(shè)置畫刷。

QPainter painter(this);QLinearGradient g(0,0,100,100);g.setColorAt(0.0,Qt::white);g.setColorAt(1.0,Qt::blue);painter.setBrush(g);p.drawRect(0,0,100,100);

在QGradient構(gòu)造函數(shù)中指定線性填充的兩點(diǎn)分別為(0,0),(100,100)。

setColorAt()函數(shù)在0-1之間設(shè)置指定位置的顏色。

2、圓形漸變填充

圓形漸變填充需要指定圓心、半徑和焦點(diǎn)

QRadialGradient(qreal cx,qreal cy,qreal radius,qreal fx,qreal fy);

畫刷在焦點(diǎn)和圓上的所有點(diǎn)之間進(jìn)行顏色插值。

創(chuàng)建QRadialGradient對(duì)象設(shè)置畫刷

QPainter painter(this);QRadialGradient radialGradient(50,50,50,30,30);radialGradient.setColorAt(0.0,Qt::white);radialGradient.setColorAt(1.0,Qt::blue);painter.setBrush(radialGradient);painter.drawRect(0,0,100,100);

3、圓錐漸變填充

圓錐漸變填充指定圓形和開始角

QConicalGradient(qreal cx,qreal cy,qreal angle);

畫刷沿圓心逆時(shí)針對(duì)顏色進(jìn)行插值

創(chuàng)建QConicalGradient對(duì)象并設(shè)置畫刷

QPainter painter(this);QConicalGradient conicalGradient(50,50,90);conicalGradient.setColorAt(0,Qt::white);conicalGradient.setColorAt(1,Qt::blue);painter.setBrush(conicalGradient);painter.drawRect(0,0,100,100);

為了實(shí)現(xiàn)自定義填充,還可以使用QPixmap或者QImage對(duì)象進(jìn)行紋理填充。兩種圖像分別使用setTexture()和setTextureImage()函數(shù)加載紋理。

以上就是關(guān)于pos機(jī)原理圖設(shè)計(jì),Qt繪圖原理詳解的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)原理圖設(shè)計(jì)的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.afbey.com/newsone/56037.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。