Qt5.9實(shí)現(xiàn)簡單復(fù)合圖形
本文實(shí)例為大家分享了Qt5.9實(shí)現(xiàn)簡單復(fù)合圖形的具體代碼,供大家參考,具體內(nèi)容如下
畫圖處理的簡單復(fù)合圖形,話不多說,先上圖吧:
對(duì)應(yīng)的頭文件;
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT protected: void paintEvent(QPaintEvent *event); public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H
對(duì)應(yīng)的cpp 文件為:
#include "widget.h" #include "ui_widget.h" #include <QPainter> void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this); int W = width(); int H = height(); int side = qMin(W,H); //去長和寬的小值 QRect rect((W -side)/2,(H-side)/2,side,side); //viewport矩形區(qū) painter.drawRect(rect); //Viewport大小 // painter.setViewport((W-side)/2, (H-side)/2,side,side);//設(shè)置Viewport,物理坐標(biāo)范圍 painter.setViewport(rect); //設(shè)置Viewport painter.setWindow(-100,-100,200,200); // 設(shè)置窗口大小,邏輯坐標(biāo) painter.setRenderHint(QPainter::Antialiasing); //設(shè)置反走樣 //設(shè)置畫筆 QPen pen; pen.setWidth(1); //線寬 pen.setColor(Qt::red); //畫線顏色 //Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine pen.setStyle(Qt::SolidLine); //線的類型 //Qt::FlatCap, Qt::SquareCap,Qt::RoundCap pen.setCapStyle(Qt::FlatCap);//線端點(diǎn)樣式 //Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin pen.setJoinStyle(Qt::BevelJoin);//線的連接點(diǎn)樣式 painter.setPen(pen); //線性漸變 QLinearGradient linearGrad(0,0,100,0);//從左到右, linearGrad.setColorAt(0,Qt::yellow); //起點(diǎn)顏色 linearGrad.setColorAt(1,Qt::green); //終點(diǎn)顏色 linearGrad.setSpread(QGradient::PadSpread);//展布模式 painter.setBrush(linearGrad); //設(shè)置復(fù)合 painter.setCompositionMode(QPainter::CompositionMode_Difference); for (int i = 0;i < 36;i++) { painter.drawEllipse(QPoint(50,0),50,50); painter.rotate(10); } } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white)); setAutoFillBackground(true); this->resize(300,300); } Widget::~Widget() { delete ui; }
在上面的程序中 ,對(duì)單個(gè)圓使用了線性漸變填充,單個(gè)圓從左到右 ,由黃色漸變?yōu)榫G色。
使用 QPainter: :setCompositionMode() 函數(shù)設(shè)置組合模式,即后面繪制的圖與前面繪制的圖的疊加模式 。
這樣就可以畫出比較炫酷的圖像了。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt實(shí)現(xiàn)FTP的上傳和下載的實(shí)例代碼
本篇文章主要介紹了Qt實(shí)現(xiàn)FTP的上傳和下載的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07Qt實(shí)現(xiàn)繪制一個(gè)簡單多邊形的示例代碼
QT提供了圖形繪制接口QPainter,通過該接口可以繪制多種圖形,包括多邊形。本文就來利用它實(shí)現(xiàn)繪制一個(gè)簡單的多邊形,感興趣的可以嘗試一下2022-11-11Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以了解一下2022-06-06