Qt5.9實現(xiàn)簡單復合圖形
更新時間:2020年07月20日 17:18:06 作者:比卡丘不皮
這篇文章主要為大家詳細介紹了Qt5.9實現(xiàn)簡單復合圖形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Qt5.9實現(xiàn)簡單復合圖形的具體代碼,供大家參考,具體內(nèi)容如下
畫圖處理的簡單復合圖形,話不多說,先上圖吧:

對應的頭文件;
#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
對應的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,物理坐標范圍
painter.setViewport(rect); //設(shè)置Viewport
painter.setWindow(-100,-100,200,200); // 設(shè)置窗口大小,邏輯坐標
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è)置復合
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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
Qt數(shù)據(jù)庫應用之實現(xiàn)數(shù)據(jù)分組導出
這篇文章主要為大家詳細介紹了如何利用Qt實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)分組導出,文中的示例代碼講解詳細,對我們學習或工作有一定參考價值,需要的可以了解一下2022-06-06

