QPainter的使用(画国旗)
2016-10-06 15:39
344 查看
国庆比较无聊,然后用Qt的QPainter画了一面国旗,代码如下:
国旗标准尺寸
源码地址
国旗标准尺寸
源码地址
//代码不是全部代码,只有主要代码 void MainWindow::paintEvent(QPaintEvent *e) { qint64 k = 15; qint64 width = 24; qint64 height = 16; QPainter p(this); p.setBrush(QColor("#F40002")); p.setPen(QColor("#FFFFFF")); p.drawRect(0, 0, width*k, height*k); //首先将坐标原点设为大五角星的中心 p.translate(60, 60); p.setBrush(QColor("#FAF408")); p.setPen(QColor("#FAF408")); // //画大五角星 QPoint points[3] = {QPoint(0, -36), QPoint(-12, 0),QPoint(12, 0)}; p.setRenderHint(QPainter::Antialiasing); for(int i = 0; i < 5; i ++) { //画三角形构成五角星 p.rotate(72); p.drawConvexPolygon(points, 3); } //四颗小星的中心点 QPoint transLate[4] = {QPoint(60, -36), QPoint(24, 24), QPoint(0, 36), QPoint(-24, 24)}; //四颗小星的偏转角度 qreal rotateAngle[4] = {-90-qRadiansToDegrees(qAtan(0.6)), -90-qRadiansToDegrees(qAtan(1.0/7.0)), -qRadiansToDegrees(qAtan(3.5)), -qRadiansToDegrees(qAtan(1.25))}; //1 QPoint points1[3] = {QPoint(0, -12), QPoint(-5, 0),QPoint(5, 0)}; for(int i = 0; i < 4; i ++) { p.translate(transLate[i]); //每次画小五角星前将坐标设为要画的五角星的中心 p.rotate(rotateAngle[i]); //并且每次都旋转一个角度以对准大五角星 for(int i = 0; i < 5; i ++) { p.rotate(72);//五角星由五个三角形组成,每次旋转72°,旋转5次得到五角星 p.drawConvexPolygon(points1, 3); //画组成五角星的三角形 } p.rotate(-rotateAngle[i]); }
相关文章推荐
- 如何使用QT的QPainter绘图和实时刷新?
- QT4中QPainter的使用及矩形、圆形等常见图形的画法
- QT 如何实现使用 QPainter 的 drawPixmap() 函数将图片文件绘制到一个 QLabel、QPushButton 或者其他的一些设备上?
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- QPainter使用注意
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- QT中使用QPainter在ui子控件中绘图
- 在paintEvent()函数外使用QPainter
- QT 使用QPainter 绘制图形 和 世界变换 world transform
- Qt编程21:使用QPainter绘图三
- Qt + opencv mat转换成qimage后无法使用qpainter显示
- 使用QPainter 画饼图
- QT中QPainter的使用及矩形、圆形等常见图形的画法
- 在Qt Widget中使用QPainter之外的引擎进行绘图
- QT 使用QPainter 绘制图形 和 世界变换 world transform
- qt中如果使用svg格式的图片在QPainter中绘制图形
- 使用QPainter的drawPixmap()绘制多幅图片 good
- QT中QPainter的使用及矩形、圆形等常见图形的画法