zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt之图形(简笔画-绘制漂亮的西瓜)

Qt 绘制 图形 漂亮 西瓜
2023-09-11 14:19:16 时间

一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个“盛夏之王”-西瓜,赶快一起来试试吧。


注意:绘制西瓜子的时候,由于西瓜子随机分布在西瓜中,所以我们使用了随机数来表示区域,并判断西瓜子是否在内圆中(西瓜子肯定要在西瓜内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);

}

教你如何用Canvas绘制整身的哆啦A梦 教你如何用Canvas绘制整身的哆啦A梦 上牌你文章我们说到了如何使用canvas绘制哆啦A梦,但当时只是绘制了哆啦A梦的头部,之后有学员留言说可不可以教大家绘制整身的哆啦A梦,想了想,决定安排一下。如图: 在这里插入图片描述 HTML代码: canvas id= my_canvas /canvas canvas id= my_canvas2 /canvas 1 2 CSS代码: * { margin: 0; } #my_canvas {
我绘制文章插图的三个神级工具 今天来给大家介绍三个我在制作文章插图时经常使用的堪称神级的工具,每一个工具都可以绘制非常精美图片,对于经常输出文章的朋友来说,绝对不容错过~
如何做一个俄罗斯方块4:形状碰撞检测(上) 在游戏开发中,我们所说的“碰撞”经常指的是物理碰撞,什么是物理碰撞呢?一般的在游戏开发工具中都会包含一个叫做“物理引擎”的东西,它的作用就是在游戏中模拟出现实中的物理效果。例如,我们扔一个东西,这个东西会因为重力而下落,最终落到地上,与地面发生碰撞。在游戏中,我们可以借助物理引擎,来模拟出东西下落掉到地面上的效果。当东西掉到地面上时,我们就说这个东西与地面发生了碰撞。但是,在俄罗斯方块这个游戏中,是不需要使用物理引擎的,所以这里的“碰撞”指的并不是物理碰撞,而是通过计算来判断两个方块是否相邻,如果相邻,我们就说它们发生了“碰撞”。
WPF画图の利用Path画扇形(仅图形) 原文:WPF画图の利用Path画扇形(仅图形) Path继承自Sharp,以System.Windows.Shapes.Shape为基类,它是一个具有各种方法的控件。 我们先看一段xaml代码:
C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(System.Windows.Shapes)和StreamGeometry(System.Windows.Media)类。