日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt 绘制五角星图形

發(fā)布時(shí)間:2024/3/13 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt 绘制五角星图形 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

<< qt5.9 c++開發(fā)指南 >>
第8章

三角函數(shù)是基本初等函數(shù)之一,是以角度(數(shù)學(xué)上最常用弧度制,下同)為自變量,角度對(duì)應(yīng)任意角終邊與單位圓交點(diǎn)坐標(biāo)或其比值為因變量的函數(shù)。

角度的弧度制

360 o = 2π rad
180 o = π rad
1 o =(π / 180)rad ≈ 0.01745 rad
1 rad =(180 /π)o ≈ 57.30 o

α 度的角 = α ·(π / 180)rad




代碼:

#include "widget.h" #include "ui_widget.h"#include <QPainter>void Widget::paintEvent(QPaintEvent *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; //半徑const qreal Pi=3.14159;qreal deg=Pi*72/180;//QPoint points[5]={QPoint(R,0),QPoint(R*std::cos(deg),-R*std::sin(deg)),QPoint(R*std::cos(2*deg),-R*std::sin(2*deg)),QPoint(R*std::cos(3*deg),-R*std::sin(3*deg)),QPoint(R*std::cos(4*deg),-R*std::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::CustomDashLinepenLine.setStyle(Qt::SolidLine);//線的類型,實(shí)線、虛線等//Qt::FlatCap, Qt::SquareCap,Qt::RoundCappenLine.setCapStyle(Qt::FlatCap);//線端點(diǎn)樣式//Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoinpenLine.setJoinStyle(Qt::BevelJoin);//線的連接點(diǎn)樣式painter.setPen(penLine);//設(shè)置畫刷QBrush brush;brush.setColor(Qt::yellow); //畫刷顏色brush.setStyle(Qt::SolidPattern); //畫刷填充樣式painter.setBrush(brush);// QPen penText; // penText.setWidth(2); //線寬 // penText.setColor(Qt::blue); //劃線顏色//設(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"); }//void Widget::resizeEvent(QResizeEvent *event) //{ // QPainter painter(this);//創(chuàng)建QPainter對(duì)象 // painter.scale(600/width(),400/height()); //}Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);setPalette(QPalette(Qt::white)); //設(shè)置窗口背景色setAutoFillBackground(true); // resize(300,200);resize(600,300); //固定初始化窗口大小 // this->resize(400,400); }Widget::~Widget() {delete ui; }

總結(jié)

以上是生活随笔為你收集整理的qt 绘制五角星图形的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。