32 Qt 之绘图之绘制一个漂亮的西瓜
简笔画
我们先简单看看西瓜的基本组成,一步步进行拆分、组合。
绘制
效果
具体的效果如下所示,我们可以再进行更好的完善。
源码
主要分为以下三部:
- 绘制外圆(绿色部分)
- 绘制内圆(红色部分)
- 绘制椭圆(西瓜子)
注意:绘制西瓜子的时候,由于西瓜子随机分布在西瓜中,所以我们使用了随机数来表示区域,并判断西瓜子是否在内圆中(西瓜子肯定要在西瓜内O__O”…)。
void MainWindow::paintEvent(QPaintEvent *)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);QPainterPath path;// 起始点(矩形左上角坐标)QPoint startPoint(50, 10);// 外部矩形宽度的1/2(外部圆半径)int nOuterRadius = 150;// 内部矩形宽度的1/2(内部圆半径)int nInnerRadius = 150;int nInnerHeightRadius = 120;// 间距int nSpacing = nOuterRadius - nInnerHeightRadius;QPointF rightPoint(startPoint.x() + nOuterRadius * 2, startPoint.y() + nOuterRadius);QRect outerRect(startPoint.x(), startPoint.y(), nOuterRadius * 2, nOuterRadius * 2);QPointF leftPoint(startPoint.x(), startPoint.y() + nInnerHeightRadius + nSpacing);QRect innerRect(startPoint.x(), startPoint.y() + nSpacing, nInnerRadius * 2, nInnerHeightRadius * 2);// 1.绘制外圆(绿色部分)path.moveTo(rightPoint);path.arcTo(outerRect, 180, 180);path.closeSubpath();painter.setPen(Qt::black);painter.setBrush(QColor(5, 150, 60));painter.drawPath(path);path = QPainterPath();// 2.绘制内圆(红色部分)path.moveTo(leftPoint);path.arcTo(innerRect, 180, 180);path.closeSubpath();painter.setPen(Qt::black);painter.setBrush(Qt::red);painter.drawPath(path);// 3.生成椭圆(西瓜子)QPainterPath seedsPath = QPainterPath();qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));// 用来判断椭圆范围for (int i = innerRect.left(); i < innerRect.left() + innerRect.width(); i += 30){for(int j = innerRect.top() + nInnerHeightRadius; j < innerRect.top() + nInnerHeightRadius * 2; j += 20){// 随机数(西瓜子随机分布在西瓜中)int nX = qrand() % 30;int nY = qrand() % 30;// 当椭圆在内部路径内时,添加至绘制路径(西瓜子肯定要在西瓜内O__O"…)QRect rect(i + nX, j + nY, 6, 10);if (path.contains(rect))seedsPath.addEllipse(rect);}}painter.setPen(Qt::NoPen);painter.setBrush(Qt::black);painter.drawPath(seedsPath);
}
32 Qt 之绘图之绘制一个漂亮的西瓜相关推荐
- allow control allow origin_Origin绘图笔记(一)——如何高效绘制一个漂亮的数据图...
软件版本:2018(2019及以上版本功能改进较大,虽然增加了一些功能,但很多操作化简为繁,不建议使用) 步骤1:管理好工作表 想要绘制一个漂亮的数据图,我认为理解工作表Sheet是很有用的,而这也是 ...
- Qt OpenGL(二十八)——Qt OpenGL 核心模式-绘制一个正方体(正六面体)
Qt OpenGL(二十七)--Qt OpenGL 核心模式-绘制一个正方体(正六面体) 截止到上一篇文章,一川想使用Qt封装的类绘制一个旋转的彩色三角形的目标就实现了. 上一篇在介绍了使用变换矩阵的 ...
- 绘制一个漂亮的弧形 View
绘制一个漂亮的弧形 View 来,先看下效果图: 怎么样?漂亮吧,上面是一个标题栏,下面是一个弧形的 View,标题栏和弧形 View 从左到右都有一个线性的渐变色,类似于手机 QQ 顶部的渐变效果, ...
- 3ds Max绘制一个漂亮的青花瓷碗3D模型
这篇教程向小伙伴门介绍使用3ds Max绘制一个漂亮的青花瓷碗3D模型方法,教程很不错,很适合大家学习,推荐过来,一起来学习吧! 车削,材质贴图的应用,添加位图,渲染视图 步骤如下: 在桌面找到3DM ...
- 33 Qt 之绘图之绘制卡通蚂蚁
绘制 具体的效果如下所示,我们可以再进行更好的完善. 源码 主要分为以下三部: 绘制屁股 绘制肚子 绘制头部 注意:绘制的时候,由于各个部分的颜色不同,而且坐标不好定位,所以我们采用的图形覆盖的方式. ...
- java graphics画圆_在Java中绘制一个漂亮的圆圈
我正在使用 Java Graphics而且我一直在变得"丑陋". 这是我的Java程序所做的 这是在Matlab中做的同样的事情 我认为Java显然不像Matlab那样" ...
- Qt之图形(简笔画-绘制漂亮的西瓜)
简述 Summer is coming-我们呢,为大家准备了丰盛的佳果-西瓜,清爽解渴,甘味多汁. 一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个"盛夏之王"-西瓜 ...
- Qt 之图形(简笔画-绘制漂亮的西瓜)
简述 Summer is coming-我们呢,为大家准备了丰盛的佳果-西瓜,清爽解渴,甘味多汁. 一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个"盛夏之王"-西瓜 ...
- 【Qt】2D绘图之绘制图像(二)
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制QImage图像 04. 绘制QPixmap图像 05. 绘制QPicture图像 06. 综合对比 07. 附录 0 ...
最新文章
- 一: 建立Vue sampleproject
- 无限容量数据库架构设计
- jquery json学习
- Eclipse --Type /com.xx.app/gen already exists but is not a source folde解决方案
- 如何获取JavaCard剩余空间
- GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音!
- Codeforces Round #513 总结
- 兼容firstChild和firstElementChild
- 游戏开发之测试篇3(C++)
- javascript的dom选择器
- Angr安装与使用之使用篇(六)
- 微信群发机器人源代码
- Win11设置定时关机命令没反应怎么办?
- landset8各波段_landsat8卫星全面
- HCDA学习笔记(二)
- 1688商品详情(商品主图、sku)
- opencv图像全景拼接
- 理解async与await
- 禁用微信浏览器字体调整的方法
- Android自定义控件之圆形头像
热门文章
- Pycharm 恢复到默认设置
- element-ui el-date-picker日期选择器 value-format问题
- 电脑显示黑屏但是鼠标能动怎么处理?
- mac os 录屏快捷键_录屏软件哪个好?赶紧收藏录屏好用方法
- [BZOJ 1135][POI2009]Lyz
- 软件测试用例的实际结果,软件测试结果归纳与分析
- 统计年鉴 excel
- opencv学习日记——娜扎小姐姐与猫咪的图像融合,超美哈哈哈
- 第一次带美瞳,突然发现眼睛大了10倍!
- ubuntu 18.04下greenplum安装笔记(二)安装Greenplum的失败的尝试