Qt5.9實現(xiàn)簡單復(fù)合圖形
更新時間:2020年07月20日 17:18:06 作者:比卡丘不皮
這篇文章主要為大家詳細(xì)介紹了Qt5.9實現(xiàn)簡單復(fù)合圖形,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Qt5.9實現(xiàn)簡單復(fù)合圖形的具體代碼,供大家參考,具體內(nèi)容如下
畫圖處理的簡單復(fù)合圖形,話不多說,先上圖吧:
對應(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
對應(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);//線端點樣式 //Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin pen.setJoinStyle(Qt::BevelJoin);//線的連接點樣式 painter.setPen(pen); //線性漸變 QLinearGradient linearGrad(0,0,100,0);//從左到右, linearGrad.setColorAt(0,Qt::yellow); //起點顏色 linearGrad.setColorAt(1,Qt::green); //終點顏色 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; }
在上面的程序中 ,對單個圓使用了線性漸變填充,單個圓從左到右 ,由黃色漸變?yōu)榫G色。
使用 QPainter: :setCompositionMode() 函數(shù)設(shè)置組合模式,即后面繪制的圖與前面繪制的圖的疊加模式 。
這樣就可以畫出比較炫酷的圖像了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)數(shù)據(jù)分組導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定參考價值,需要的可以了解一下2022-06-06