中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

平度市城鄉(xiāng)建設局網(wǎng)站google下載手機版

平度市城鄉(xiāng)建設局網(wǎng)站,google下載手機版,中國女排賽程時間最新消息,建立網(wǎng)站目錄的意義目錄 一、繪圖框架設計 二、繪圖區(qū)的實現(xiàn) 2.1 PaintArea類 2.2 PaintArea類講解 三、主窗口的實現(xiàn) 3.1 MainWidget類 3.2 MainWidget類講解 3.3 槽函數(shù)編寫 3.5 其他內(nèi)容 一、繪圖框架設計 界面 兩個類 ? 二、繪圖區(qū)的實現(xiàn) 2.1 PaintArea類 ?paintarea.h #ifndef…

目錄

一、繪圖框架設計

二、繪圖區(qū)的實現(xiàn)

2.1 PaintArea類

2.2 PaintArea類講解

三、主窗口的實現(xiàn)

3.1?MainWidget類

3.2?MainWidget類講解

3.3 槽函數(shù)編寫

3.5 其他內(nèi)容


一、繪圖框架設計

界面

兩個類

?

二、繪圖區(qū)的實現(xiàn)

2.1 PaintArea類

?paintarea.h

#ifndef PAINTAREA_H
#define PAINTAREA_H#include <QWidget>
#include <QPen>
#include <QBrush>class PaintArea : public QWidget
{Q_OBJECT
public:enum Shape{ Line, Rectangle, RoundRect, Ellipse, Polygon, PolyLine, Points, Arc, Path, Text, Pixmap };explicit PaintArea(QWidget *parent = nullptr);void setShape(Shape);void setPen(QPen);void setBrush(QBrush);void setFileRule(Qt::FillRule);void paintEvent(QPaintEvent *);signals:private:Shape shape;QPen pen;QBrush brush;Qt::FillRule fillRule;
};#endif // PAINTAREA_H

?paintarea.cpp

#include "paintarea.h"
#include <QPainter>
#include <QPainterPath>PaintArea::PaintArea(QWidget *parent) : QWidget(parent)
{//QPalete::Window——通常指窗口部件的背景色;setPalette(QPalette(Qt::white));  //給窗口設置背景圖片無效//上面的代碼可替換為下面三行//QPalette p = palette();//p.setColor(QPalette::Window, Qt::white);//setPalette(p);setAutoFillBackground(true);setMinimumSize(400, 400);
}//設置形狀
void PaintArea::setShape(PaintArea::Shape s)
{shape = s;update();
}// 設置畫筆
void PaintArea::setPen(QPen p)
{pen = p;update();
}// 設置畫刷
void PaintArea::setBrush(QBrush b)
{brush = b;update();
}// 設置填充模式
void PaintArea::setFileRule(Qt::FillRule rule)
{fillRule = rule;update();
}void PaintArea::paintEvent(QPaintEvent *)
{QPainter p(this);                //新建一個QPainter對象p.setPen(pen);                   //設置QPainter對象的畫筆p.setBrush(brush);               //設置QPainter對象的畫刷QRect rect(50, 100, 300, 200);   //(a)static const QPoint points[4] =  //(b){QPoint(150, 100),QPoint(300, 150),QPoint(300, 250),QPoint(100, 300)};int startAngle = 30 * 16;        //(c)int spanAngle = 120 * 16;QPainterPath path;               //新建一個QPainterPath對象為路徑做準備path.addRect(150, 150, 100, 100);path.moveTo(100, 100);path.cubicTo(300, 100, 200, 200, 300, 300);path.cubicTo(100, 300, 200, 200, 100, 100);path.setFillRule(fillRule);switch (shape)                   //(d){case Line:                   //直線p.drawLine(rect.topLeft(), rect.bottomRight()); break;case Rectangle:              //長方形p.drawRect(rect); break;case RoundRect:              //圓角方形p.drawRoundedRect(rect, 4, 4); break;case Ellipse:                //橢圓形p.drawEllipse(rect); break;case Polygon:                //多邊形p.drawPolygon(points, 4); break;case Points:                 //點p.drawPoints(points, 4); break;case Arc:                    //弧p.drawArc(rect, startAngle, spanAngle); break;case Path:                   //路徑p.drawPath(path); break;case Text:                   //文字p.drawPolygon(points, 4); break;case DrawPixmap:             //圖片p.Pixmap(150, 150, QPixmap("butterfly.png")); break;default: break;}
}

2.2 PaintArea類講解

(a) 用QPainter畫弧形所使用的角度值,是以 1/16° 為單位的,startAngle=30*16 和 spanAngle=120*16 能繪制出下面的圖像

(d) QPainter 對象內(nèi)置了很多函數(shù),能繪制多種圖形

(d) QPointerPath 類為 QPointer 類提供了一個存儲容器,里面包含了所要繪制的內(nèi)容的集合及繪制的順序,我們只需要調(diào)用 QPainter 類的 drawPath() 函數(shù)即可

QPointer 對象提供了許多函數(shù)接口??梢院芊奖愕丶尤胍恍┮?guī)則圖形。例如,addRect() 函數(shù)加入一個方形,addEllipse() 函數(shù)加入一個橢圓形,addText() 函數(shù)加入一個字符串,addPolygon() 函數(shù)加入一個多邊形等。同時,QPainterPath 類還提供了 addPath() 函數(shù),用于加入另一個 QPainter 對象中保存的內(nèi)容

QPainterPath 對象的當前點自動處在上一部分圖形內(nèi)容的結束點上,若下一部分圖形的起點不在此結束點,則需調(diào)用 moveTo() 函數(shù)將當前點移動到下一部分圖形的起點

cubicTo() 函數(shù)繪制的是貝塞爾曲線,需要三個點的坐標 cubicTo(c1, c2, endPoint)

?QPainterPath path;

path.moveTo(0,0);

path.lineTo(200, 0);

path.lineTo(200,100);

三、主窗口的實現(xiàn)

3.1?MainWidget類

?mainwidget.h

#ifndef MAINWIDGET_H
#define MAINWIDGET_H#include <QWidget>
#include "paintarea.h"
#include <QLabel>
#include <QComboBox>
#include <QSpinBox>
#include <QPushButton>
#include <QGridLayout>
#include <QGradient>class MainWidget : public QWidget
{Q_OBJECTpublic:MainWidget(QWidget *parent = nullptr);~MainWidget();private:PaintArea *paintArea;QLabel *shapeLabel;QComboBox *shapeComboBox;QLabel *penWidthLabel;QSpinBox *penWidthSpinBox;QLabel *penColorLabel;QFrame *penColorFrame;QPushButton *penColorBtn;QLabel *penStyleLabel;QComboBox *penStyleComboBox;QLabel *penCapLabel;QComboBox *penCapComboBox;QLabel *penJoinLabel;QComboBox *penJoinComboBox;QLabel *fillRuleLabel;QComboBox *fillRuleComboBox;QLabel *spreadLabel;QComboBox *spreadComboBox;QGradient::Spread spread;QLabel *brushStyleLabel;QComboBox *brushStyleComboBox;QLabel *brushColorLabel;QFrame *brushColorFrame;QPushButton *brushColorBtn;QGridLayout *rightLayout;protected slots:void ShowShape(int);void ShowPenWidth(int);void ShowPenColor();void ShowPenStyle(int);void ShowPenCap(int);void ShowPenJoin(int);void ShowSpreadStyle();void ShowFillRule();void ShowBrushColor();void ShowBrush(int);
};
#endif // MAINWIDGET_H

mainwidget.cpp

#include "mainwidget.h"
#include <QColorDialog>MainWidget::MainWidget(QWidget *parent): QWidget(parent)
{paintArea = new PaintArea;shapeLabel = new QLabel(tr("形狀:"));                       //形狀選擇下拉列表框shapeComboBox = new QComboBox;shapeComboBox->addItem(tr("Line"), PaintArea::Line);        //(a)shapeComboBox->addItem(tr("Rectangle"), PaintArea::Rectangle);shapeComboBox->addItem(tr("RoundedRect"), PaintArea::RoundRect);shapeComboBox->addItem(tr("Ellipse"), PaintArea::Ellipse);shapeComboBox->addItem(tr("Polygon"), PaintArea::Polygon);shapeComboBox->addItem(tr("PolyLine"), PaintArea::PolyLine);shapeComboBox->addItem(tr("Points"), PaintArea::Points);shapeComboBox->addItem(tr("Arc"), PaintArea::Arc);shapeComboBox->addItem(tr("Path"), PaintArea::Path);shapeComboBox->addItem(tr("Text"), PaintArea::Text);shapeComboBox->addItem(tr("Pixmap"), PaintArea::Pixmap);connect(shapeComboBox, SIGNAL(activated(int)), this, SLOT(ShowShape(int)));penColorLabel = new QLabel(tr("畫筆顏色: "));                 //畫筆顏色選擇控件penColorFrame = new QFrame;penColorFrame->setFrameStyle(QFrame::Panel|QFrame::Sunken);penColorFrame->setAutoFillBackground(true);penColorFrame->setPalette(QPalette(Qt::blue));penColorBtn = new QPushButton(tr("更改"));connect(penColorBtn,SIGNAL(clicked()),this,SLOT(ShowPenColor()));penWidthLabel = new QLabel(tr("畫筆線寬: "));                 //畫筆線寬選擇控件penWidthSpinBox = new QSpinBox;penWidthSpinBox->setRange(0,20);connect(penWidthSpinBox, SIGNAL(valueChanged(int)), this, SLOT(ShowPenWidth(int)));penStyleLabel = new QLabel(tr("畫筆風格: "));                 //畫筆風格選擇下拉列表框penStyleComboBox= new QComboBox;penStyleComboBox->addItem(tr("SolidLine"), static_cast<int>(Qt::SolidLine));  //(b)penStyleComboBox->addItem(tr("DashLine"), static_cast<int>(Qt::DashLine));penStyleComboBox->addItem(tr("DotLine"), static_cast<int>(Qt::DotLine));penStyleComboBox->addItem(tr("DashDotLine"), static_cast<int>(Qt::DashDotLine));penStyleComboBox->addItem(tr("DashDotDotLine"), static_cast<int>(Qt::DashDotDotLine));penStyleComboBox->addItem(tr("CustomDashLine"), static_cast<int>(Qt::CustomDashLine));connect(penStyleComboBox, SIGNAL(activated(int)), this, SLOT(ShowPenStyle(int)));penCapLabel = new QLabel(tr("畫筆頂帽: "));                   //畫筆頂帽風格選擇下拉列表框penCapComboBox= new QComboBox;penCapComboBox->addItem(tr("Squarecap"), Qt::SquareCap);    //(c)penCapComboBox->addItem(tr("FlatCap"), Qt::FlatCap);penCapComboBox->addItem(tr("RoundCap"), Qt::RoundCap);connect(penCapComboBox, SIGNAL(activated(int)), this, SLOT(ShowPenCap(int)));penJoinLabel = new QLabel(tr("畫筆連接點:"));                //畫筆連接點風格選擇下拉列表框penJoinComboBox = new QComboBox;penJoinComboBox->addItem(tr("BevelJoin"), Qt::BevelJoin);   //(d)penJoinComboBox->addItem(tr("MiterJoin"), Qt::MiterJoin);penJoinComboBox->addItem(tr("RoundJoin"), Qt::RoundJoin);connect(penJoinComboBox, SIGNAL(activated(int)), this, SLOT(ShowPenJoin(int)));fillRuleLabel = new QLabel(tr("填充模式: "));                 //填充模式選擇下拉列表能fillRuleComboBox = new QComboBox;fillRuleComboBox->addItem(tr("Odd Even"), Qt::OddEvenFill);fillRuleComboBox->addItem(tr("Winding"), Qt::WindingFill);    //(e)connect(fillRuleComboBox, SIGNAL(activated(int)), this, SLOT(ShowFillRule()));spreadLabel = new QLabel(tr("鋪展效果: "));                   //鋪展效果選擇下拉列表框spreadComboBox = new QComboBox;spreadComboBox->addItem(tr("PadSpread"),QGradient::PadSpread); //(f)spreadComboBox->addItem(tr("RepeatSpread"), QGradient::RepeatSpread);spreadComboBox->addItem(tr("ReflectSpread"), QGradient::ReflectSpread);connect (spreadComboBox, SIGNAL(activated(int)), this, SLOT(ShowSpreadStyle()));brushColorLabel = new QLabel(tr("畫刷顏色: "));               //畫刷顏色選擇控件brushColorFrame = new QFrame;brushColorFrame->setFrameStyle(QFrame::Panel|QFrame::Sunken);brushColorFrame->setAutoFillBackground(true);brushColorFrame->setPalette(QPalette(Qt::green));brushColorBtn = new QPushButton(tr("更改"));connect (brushColorBtn,SIGNAL(clicked()),this,SLOT(ShowBrushColor()));brushStyleLabel = new QLabel(tr("畫刷風格: "));               //畫刷風格選擇下拉列表框brushStyleComboBox = new QComboBox;                         brushStyleComboBox->addItem(tr("Solidpattern"), static_cast<int>(Qt::SolidPattern));  //(g)brushStyleComboBox->addItem(tr("DenselPattern"), static_cast<int>(Qt::Dense1Pattern));brushStyleComboBox->addItem(tr("Dense2Pattern"), static_cast<int>(Qt::Dense2Pattern));brushStyleComboBox->addItem(tr("Dense3Pattern"), static_cast<int>(Qt::Dense3Pattern));brushStyleComboBox->addItem(tr("Dense4Pattern"), static_cast<int>(Qt::Dense4Pattern));brushStyleComboBox->addItem(tr("Dense5Pattern"), static_cast<int>(Qt::Dense5Pattern));brushStyleComboBox->addItem(tr("Dense6Pattern"), static_cast<int>(Qt::Dense6Pattern));brushStyleComboBox->addItem(tr("Dense7Pattern"), static_cast<int>(Qt::Dense7Pattern));brushStyleComboBox->addItem(tr("HorPattern"), static_cast<int>(Qt::HorPattern));brushStyleComboBox->addItem(tr("VerPattern"), static_cast<int>(Qt::VerPattern));brushStyleComboBox->addItem(tr("CrossPattern"), static_cast<int>(Qt::CrossPattern));brushStyleComboBox->addItem(tr("BDiagPattern"), static_cast<int>(Qt::BDiagPattern));brushStyleComboBox->addItem(tr("FDiagPattern"), static_cast<int>(Qt::FDiagPattern));brushStyleComboBox->addItem(tr("DiagCrossPattern"), static_cast<int>(Qt:: DiagCrossPattern));brushStyleComboBox->addItem(tr("LinearGradientPattern"), static_cast<int>(Qt::LinearGradientPattern));brushStyleComboBox->addItem(tr("ConicalGradientPattern"), static_cast<int>(Qt::ConicalGradientPattern));brushStyleComboBox->addItem(tr("RadialGradientPattern"), static_cast<int>(Qt::RadialGradientPattern));brushStyleComboBox->addItem(tr("TexturePattern"), static_cast<int>(Qt::TexturePattern));connect(brushStyleComboBox, SIGNAL(activated(int)), this, SLOT(ShowBrush(int)));rightLayout = new QGridLayout;rightLayout->addWidget(shapeLabel, 0, 0);                   //控制面板的布局rightLayout->addWidget(shapeComboBox, 0, 1);rightLayout->addWidget(penColorLabel, 1, 0);rightLayout->addWidget(penColorFrame, 1, 1);rightLayout->addWidget(penColorBtn, 1, 2);rightLayout->addWidget(penWidthLabel, 2, 0);rightLayout->addWidget(penWidthSpinBox, 2, 1);rightLayout->addWidget (penStyleLabel, 3, 0);rightLayout->addWidget(penStyleComboBox, 3, 1);rightLayout->addWidget(penCapLabel, 4, 0);rightLayout->addWidget(penCapComboBox, 4, 1);rightLayout->addWidget(penJoinLabel, 5, 0);rightLayout->addWidget(penJoinComboBox, 5, 1);rightLayout->addWidget(fillRuleLabel, 6, 0);rightLayout->addWidget(fillRuleComboBox, 6, 1);rightLayout->addWidget(spreadLabel, 7, 0);rightLayout->addWidget(spreadComboBox, 7, 1);rightLayout->addWidget(brushColorLabel, 8, 0);rightLayout->addWidget(brushColorFrame, 8, 1);rightLayout->addWidget(brushColorBtn, 8, 2);rightLayout->addWidget (brushStyleLabel, 9, 0);rightLayout->addWidget(brushStyleComboBox, 9, 1);QHBoxLayout *mainLayout = new QHBoxLayout(this);            //整體的布局mainLayout->addWidget(paintArea);mainLayout->addLayout(rightLayout);mainLayout->setStretchFactor(paintArea, 1);mainLayout->setStretchFactor(rightLayout, 0);ShowShape(shapeComboBox->currentIndex());                   //顯示默認的圖形
}MainWidget::~MainWidget()
{
}void MainWidget::ShowShape(int)
{}void MainWidget::ShowPenWidth(int)
{}void MainWidget::ShowPenColor()
{}void MainWidget::ShowPenStyle(int)
{}void MainWidget::ShowPenCap(int)
{}void MainWidget::ShowPenJoin(int)
{}void MainWidget::ShowSpreadStyle()
{}void MainWidget::ShowFillRule()
{}void MainWidget::ShowBrushColor()
{}void MainWidget::ShowBrush(int)
{}

3.2?MainWidget類講解

(a) shapeComboBox 增加選項??梢灾徊迦肭懊娴倪@個文本,也可以同時插入文本相應的具體數(shù)據(jù)(通常為枚舉類型)

?

(b) penStyleComboBox->addItem(tr("SolidLine"), static_cast<int>(Qt::SolidLine));

這里是選擇畫筆的風格

?(c) penCapComboBox->addItem(tr("Squarecap"), Qt::SquareCap);

畫筆頂帽風格

?(d) penJoinComboBox->addItem(tr("BevelJoin"), Qt::BevelJoin);

畫筆連接點風格,分別是方、尖、圓

(e) fillRuleComboBox->addItem(tr("Winding"), Qt::WindingFill);

Qt 為 QPainterPath 類提供了兩種填充規(guī)則,分別是 Qt::OddEvenFill 和 Qt::WindingFill,如下圖所示

這兩種填充規(guī)則在判定圖形中某一點是處內(nèi)部還是外部時,判斷依據(jù)不同:

Qt::OddEvenFill 填充規(guī)則判斷依據(jù)是從圖形中某一點畫一條水平線到圖形外。若這條水平線與圖形邊線的交點數(shù)目為奇數(shù),則說明此點位于圖形的內(nèi)部;若焦點數(shù)目為偶數(shù),則此點位于圖形的外部,如圖 6.12

Qt::WindingFill 填充規(guī)則的判斷依據(jù)是從圖形中某一點畫一條水平線到圖形外,每個點外邊線的方向可能向上,也可能向下,若最后結果為 0 則說明在圖形外,如圖 6.13 (邊線的方向是由 QPainterPath 創(chuàng)建時根據(jù)描述的順序決定的時候。如果采用 addRect() 或 addPolygon() 等函數(shù)加入的圖形,默認是按照順時針方向)

(g) brushStyleComboBox->addItem(tr("Solidpattern"), static_cast<int>(Qt::SolidPattern));

畫刷的各種風格:

?

3.3 槽函數(shù)編寫

?showShape() 槽函數(shù),根據(jù)當前下拉列表框中選擇的選項,調(diào)用 PaintArea 類的 setShape() 函數(shù)來設置 PaintArea 對象的形狀參數(shù):

void MainWidget::ShowShape(int value)
{PaintArea::Shape shape = PaintArea::Shape(shapeComboBox->itemData(value, Qt::UserRole).toInt());paintArea->setShape(shape);
}

QComboBox 類的 itemData 方法返回當前顯示的下拉列表框數(shù)據(jù),是一個 QVariant 對象,此對象與控件初始化時插入的枚舉型數(shù)據(jù)相關,調(diào)用 QVariant 類的 toInt() 函數(shù)獲得此數(shù)據(jù)在枚舉型數(shù)據(jù)集合中的序號

其他槽函數(shù)比較簡單就不做過多贅述。其中鋪展效果好像演示不了,我不知道是不是我版本是 QT5 的緣故,還是我抄代碼抄錯了,有小伙伴知道的告訴我一聲

//設置畫筆顏色(邊線顏色)
void MainWidget::ShowPenColor()
{QColor color = QColorDialog::getColor(static_cast<int>(Qt::blue));penColorFrame->setPalette(QPalette(color));int value = penWidthSpinBox->value();Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(penStyleComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenCapStyle cap = Qt:: PenCapStyle(penCapComboBox->itemData(penCapComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenJoinStyle join = Qt::PenJoinStyle(penJoinComboBox->itemData(penJoinComboBox->currentIndex(), Qt::UserRole).toInt());paintArea->setPen(QPen(color, value, style, cap, join));
}//設置畫筆寬度
void MainWidget::ShowPenWidth(int value)
{QColor color = penColorFrame->palette().color(QPalette::Window);Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(penStyleComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenCapStyle cap = Qt::PenCapStyle(penCapComboBox->itemData(penCapComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenJoinStyle join = Qt::PenJoinStyle(penJoinComboBox->itemData(penJoinComboBox->currentIndex(), Qt::UserRole).toInt());paintArea->setPen(QPen(color, value, style, cap, join));
}//設置畫筆風格
void MainWidget::ShowPenStyle(int stylevalue)
{QColor color = penColorFrame->palette().color(QPalette::Window);int value = penWidthSpinBox->value();Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(stylevalue, Qt::UserRole).toInt());Qt::PenCapStyle cap = Qt::PenCapStyle(penCapComboBox->itemData(penCapComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenJoinStyle join = Qt::PenJoinStyle(penJoinComboBox->itemData(penJoinComboBox->currentIndex(), Qt::UserRole).toInt());paintArea->setPen(QPen(color, value, style, cap, join));
}//設置畫筆頂帽
void MainWidget::ShowPenCap(int capValue)
{QColor color = penColorFrame->palette().color(QPalette::Window);int value = penWidthSpinBox->value();Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(penStyleComboBox->currentIndex(), Qt::UserRole).toInt());Qt::PenCapStyle cap = Qt::PenCapStyle(penCapComboBox->itemData(capValue,Qt::UserRole).toInt());Qt::PenJoinStyle join = Qt::PenJoinStyle(penJoinComboBox->itemData(penJoinComboBox->currentIndex(), Qt::UserRole).toInt());paintArea->setPen(QPen(color,value,style,cap,join));
}//設置畫筆連接點
void MainWidget::ShowPenJoin(int joinValue)
{QColor color = penColorFrame->palette().color (QPalette::Window);int value = penWidthSpinBox->value();Qt::PenStyle style = Qt::PenStyle(penStyleComboBox->itemData(penStyleComboBox->currentIndex(),Qt::UserRole).toInt());Qt::PenCapStyle cap = Qt::PenCapStyle(penCapComboBox->itemData(penCapComboBox->currentIndex(),Qt::UserRole).toInt());Qt::PenJoinStyle join = Qt::PenJoinStyle(penJoinComboBox->itemData(joinValue, Qt::UserRole).toInt());paintArea->setPen(QPen(color, value, style, cap, join));
}//設置填充模式(點在圖形內(nèi)還是圖形外的判定規(guī)則)
void MainWidget::ShowFillRule()
{Qt::FillRule rule = Qt::FillRule(fillRuleComboBox->itemData(fillRuleComboBox->currentIndex(), Qt::UserRole).toInt());paintArea->setFileRule(rule);
}// 設置擴散方式
void MainWidget::ShowSpreadStyle()
{spread = QGradient::Spread(spreadComboBox->itemData(spreadComboBox->currentIndex(), Qt::UserRole).toInt());
}// 設置畫刷顏色(內(nèi)部顏色)
void MainWidget::ShowBrushColor()
{QColor color = QColorDialog::getColor(static_cast<int>(Qt::blue));brushColorFrame->setPalette(QPalette(color));ShowBrush(brushStyleComboBox->currentIndex());
}// 設置畫刷風格(邊線)和顏色(內(nèi)部)
void MainWidget::ShowBrush(int value)
{//獲得畫刷的顏色QColor color = brushColorFrame->palette().color(QPalette:: Window);Qt::BrushStyle style = Qt::BrushStyle(brushStyleComboBox->itemData(value, Qt::UserRole).toInt());  //(a)if(style == Qt::LinearGradientPattern)  //(b){QLinearGradient linearGradient(0, 0, 400, 400);linearGradient.setColorAt(0.0, Qt::white);linearGradient.setColorAt(0.2, color);linearGradient.setColorAt (1.0, Qt::black);linearGradient.setSpread(spread);paintArea->setBrush(linearGradient);}else if(style == Qt::RadialGradientPattern)  //(c){QRadialGradient radialGradient(200, 200, 150, 150, 100);radialGradient.setColorAt(0.0, Qt::white);radialGradient.setColorAt(0.2, color);radialGradient.setColorAt(1.0, Qt::black);radialGradient.setSpread(spread);paintArea->setBrush(radialGradient);}else if(style == Qt::ConicalGradientPattern){QConicalGradient conicalGradient(200, 200, 30);conicalGradient.setColorAt(0.0, Qt::white);conicalGradient.setColorAt (0.2, color);conicalGradient.setColorAt(1.0, Qt::black);paintArea->setBrush(conicalGradient);}else if(style == Qt::TexturePattern){paintArea->setBrush(QBrush(QPixmap("butterfly.png")));}else{paintArea->setBrush(QBrush(color, style));}
}

最后一個函數(shù)涉及到的內(nèi)容很多,可以自己看一下源碼。簡單的意思就是下面兩個圖,根據(jù) value 選擇的值來對應 style,然后根據(jù) style 的不同值做不同的處理。進入這個函數(shù)是 畫刷風格觸發(fā)的槽函數(shù) 或者 ShowBrushColor()函數(shù)

?

3.5 其他內(nèi)容

Qt 畫圖的坐標系默認以左上角為原點,x 軸向右,y 軸向下。此坐標系可受到 QPainter 類的控制,QPainter 類提供了相應的變形函數(shù),包括旋轉、縮放、平移和切邊。調(diào)用這些函數(shù)時,看起來是對繪制內(nèi)容的改變,實際上是坐標系的改變。如果還需要實現(xiàn)更復雜的變形,則可以采用 QTransform 類實現(xiàn)

http://www.risenshineclean.com/news/27406.html

相關文章:

  • b站推廣入口在哪里天津seo渠道代理
  • 找別人做網(wǎng)站的注意事項網(wǎng)站外鏈優(yōu)化方法
  • 個人兼職網(wǎng)站制作外鏈下載
  • 企業(yè)網(wǎng)站建設費怎么核算seo優(yōu)化包括哪些內(nèi)容
  • 外國人做網(wǎng)站百度一下你就知道了 官網(wǎng)
  • 自己做手機版網(wǎng)站制作濰坊網(wǎng)站排名提升
  • 網(wǎng)站的分辨率是多少像素網(wǎng)盤資源
  • 響應式企業(yè)網(wǎng)站制作公司佛山做網(wǎng)站推廣的公司
  • 成都創(chuàng)新互聯(lián)做的網(wǎng)站怎么樣下載百度衛(wèi)星導航
  • 商城網(wǎng)站建設開發(fā)公司開魯seo服務
  • 個人網(wǎng)頁html實例完整代碼哈爾濱seo推廣
  • 專業(yè)網(wǎng)站建設機構網(wǎng)站怎么宣傳
  • asp.net mvc 網(wǎng)站開發(fā)之美網(wǎng)上推廣怎么做
  • 建湖做網(wǎng)站哪家好優(yōu)化營商環(huán)境心得體會2023
  • 最優(yōu)秀的無錫網(wǎng)站建設推廣賺錢的app
  • 網(wǎng)站建設前臺與后臺最新技術怎么推廣軟件
  • 做網(wǎng)站排名推廣效果怎么樣新品怎么推廣效果最好
  • net和cn哪個做網(wǎng)站好推廣網(wǎng)站都有哪些
  • 成都網(wǎng)站建設四川推來客網(wǎng)絡網(wǎng)絡營銷試卷
  • 營銷型網(wǎng)站建設tfx88無錫網(wǎng)站制作推廣
  • h5制作開發(fā)哪找石家莊seo推廣優(yōu)化
  • 深圳商城軟件開發(fā)公司優(yōu)化一個網(wǎng)站需要多少錢
  • 煙臺中企動力提供網(wǎng)站建設深圳搜索引擎優(yōu)化seo
  • 普洱網(wǎng)站建設優(yōu)化百度快照排名
  • 網(wǎng)頁制作網(wǎng)站湖南專業(yè)的關鍵詞優(yōu)化
  • 仿 手機 網(wǎng)站模板html百度seo快速排名優(yōu)化
  • 彩虹云商城游戲行業(yè)seo整站優(yōu)化
  • 百度推廣做網(wǎng)站什么價位網(wǎng)站域名備案查詢
  • 網(wǎng)站建設建網(wǎng)站互聯(lián)網(wǎng)營銷師培訓內(nèi)容
  • 新疆小程序開發(fā)商重慶網(wǎng)站seo搜索引擎優(yōu)化