Qt5.9畫五角星的方法
更新時(shí)間:2020年07月20日 14:57:06 作者:比卡丘不皮
這篇文章主要為大家詳細(xì)介紹了Qt5.9畫五角星的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Qt5.9畫五角星的具體代碼,供大家參考,具體內(nèi)容如下
今天記錄一下畫圖部分的程序,比較簡(jiǎn)單,容易操作,為接下來(lái)打好基礎(chǔ):
先說(shuō)界面吧:
里面的圖位置跟圖像學(xué)有點(diǎn)關(guān)系,多多理解一下:
對(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> #include <iostream> #include<math.h> using namespace std; void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this);//創(chuàng)建QPainter對(duì)象 painter.setRenderHint(QPainter::Antialiasing);// painter.setRenderHint(QPainter::TextAntialiasing);// //生成五角星的5個(gè)頂點(diǎn)的,假設(shè)原點(diǎn)在五角星中心 qreal R = 100; //半徑 //這里說(shuō)明一下,qreal 在windows 下面是double 在嵌入式中是float類型。 const qreal Pi = 3.1415926; qreal deg = Pi * 72/180; QPoint points[5] = { QPoint(R,0), QPoint(R*cos(deg),-R*sin(deg)), QPoint(R*cos(2*deg),-R*sin(2*deg)), QPoint(R*cos(3*deg),-R*sin(3*deg)), QPoint(R*cos(4*deg),-R*sin(4*deg)), }; //設(shè)置字體 QFont font; font.setPointSize(12); font.setBold(true); painter.setFont(font); //設(shè)置畫筆 QPen penLine; penLine.setWidth(2);//線寬 penLine.setColor(Qt::blue); //劃線顏色 //Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine penLine.setStyle(Qt::SolidLine);//線的類型,實(shí)線、虛線等 //Qt::FlatCap, Qt::SquareCap,Qt::RoundCap penLine.setCapStyle(Qt::FlatCap);//線端點(diǎn)樣式 //Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin penLine.setJoinStyle(Qt::BevelJoin);//線的連接點(diǎn)樣式 painter.setPen(penLine); //設(shè)置畫刷 QBrush brush; brush.setColor(Qt::yellow); //畫刷顏色 brush.setStyle(Qt::SolidPattern); //畫刷填充樣式 painter.setBrush(brush); // //設(shè)計(jì)繪制五角星的PainterPath,以便重復(fù)使用 QPainterPath starPath; starPath.moveTo(points[0]); starPath.lineTo(points[2]); starPath.lineTo(points[4]); starPath.lineTo(points[1]); starPath.lineTo(points[3]); starPath.closeSubpath(); //閉合路徑,最后一個(gè)點(diǎn)與第一個(gè)點(diǎn)相連 starPath.addText(points[0],font,"0"); //顯示端點(diǎn)編號(hào) starPath.addText(points[1],font,"1"); starPath.addText(points[2],font,"2"); starPath.addText(points[3],font,"3"); starPath.addText(points[4],font,"4"); //繪圖 painter.save(); //保存坐標(biāo)狀態(tài) painter.translate(100,120); painter.drawPath(starPath); //畫星星 painter.drawText(0,0,"S1"); painter.restore(); //恢復(fù)坐標(biāo)狀態(tài) painter.translate(300,120); //平移 painter.scale(0.8,0.8); //縮放 painter.rotate(90); //順時(shí)針旋轉(zhuǎn) painter.drawPath(starPath);//畫星星 painter.drawText(0,0,"S2"); painter.resetTransform(); //復(fù)位所有坐標(biāo)變換 painter.translate(500,120); //平移 painter.rotate(-145); //逆時(shí)針旋轉(zhuǎn) painter.drawPath(starPath);//畫星星 painter.drawText(0,0,"S3"); } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white)); //設(shè)置背景色是白色 setAutoFillBackground(true); //設(shè)置背景自動(dòng)填充 resize(600,300); //固定大小 } Widget::~Widget() { delete ui; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)手寫Map(數(shù)組+鏈表+紅黑樹)的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)手寫Map(數(shù)組+鏈表+紅黑樹),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定借鑒價(jià)值,需要的可以參考一下2022-09-09關(guān)于單片機(jī)按鍵問(wèn)題性能提升總結(jié)
今天小編就為大家分享一篇關(guān)于關(guān)于單片機(jī)按鍵問(wèn)題性能提升總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12