【Qt绘图】之绘制坦克

使用绘图事件,绘制坦克。

效果

效果很逼真,想象力,有没有。
在这里插入图片描述

示例

代码像诗一样优雅,有没有。

  • 包含头文件
#include <QApplication>
#include <QWidget>
#include <QPainter>
  • 绘制坦克类
class TankWidget : public QWidget
{
public:TankWidget(QWidget *parent = 0): QWidget(parent){setFixedSize(400, 300);}protected:void paintEvent(QPaintEvent *){QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);int nOffset = 0;for(int i = 0; i < 4; ++i){// 绘制坦克炮筒painter.setPen(Qt::black);painter.setBrush(Qt::gray);painter.drawRect(90+nOffset, 100, 20, 60);// 绘制坦克车身painter.setBrush(Qt::darkGreen);painter.drawRect(30+nOffset, 140, 60, 20);painter.drawRect(40+nOffset, 120, 40, 20);// 绘制坦克底盘painter.setPen(Qt::black);painter.setBrush(Qt::green);painter.drawRect(10+nOffset, 160, 100, 40);// 绘制坦克履带painter.setPen(Qt::black);painter.setBrush(Qt::darkGray);// 履带painter.drawEllipse(12+nOffset, 190, 20, 20);painter.drawEllipse(37+nOffset, 190, 20, 20);painter.drawEllipse(62+nOffset, 190, 20, 20);painter.drawEllipse(87+nOffset, 190, 20, 20);nOffset += 150;}}
};
  • 调用
int main(int argc, char *argv[])
{QApplication app(argc, argv);TankWidget widget;widget.show();return app.exec();
}

分析

  • 首先,通过绘制矩形、椭圆等基本图形进行坦克的绘制。其中,通过设置画刷的颜色和绘制顺序等绘制技巧,实现了具有逼真感的坦克效果。
  • 需要注意的是,在Qt中,可以通过重载QWidgetpaintEvent函数,来实现对控件的绘制操作。在paintEvent函数中,可以使用QPainter对象进行各种基本图形的绘制,并设置画笔、画刷等属性,以达到所需的效果。
  • 除此之外,还可以使用QPixmapQImage等对象,将一幅静态的坦克图像加载到窗口中,来实现更加逼真的坦克效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm+java车辆售后维护系统 springboot汽车保养养护管理系统+jsp

以前汽车维修人员只是在汽车运输行业中从事后勤保障工作,随着我国经济的发展,汽车维修行业已经从原来的从属部门发展成了如今的功能齐备的独立企业。这种结构的转变,给私营汽修企业和个体汽修企业的发展带来了契机,私营企业和个体维修企业的加入也带动了整个汽修行业的整体水平…

线性回归 调试方法

调试方法 特征缩放 对于某些不具有比较性的样本特征 x i x_i xi​ &#xff08;比如对其他的x来说 x i x_i xi​ 相当大或者相当小&#xff09;&#xff0c;梯度下降的过程可能会非常漫长&#xff0c;并且可能来回波动才能最后收敛到全局的最小值。 在这样的情况下&#xff…

python中操作excel的常用库和方法

无论办公自动化或者数据分析中&#xff0c;我们常会用到excel表格。在python中都有哪些库处理数据表格&#xff1f;下面就说明一下在python中有哪些库能够处理数据表格。 xlwt库 pip install xlwtxlwt库仅仅能向excel中写入数据&#xff0c;流程如下&#xff1a; 创建一个wo…

嵌入式Linux:配置Ubuntu系统环境和安装开发工具

目录 1、配置Ubuntu系统环境 1.1、APT下载工具 1.2、更新语言 1.3、更新本地数据库 1.4、安装VIM编辑器 1.5、Ubuntu 和 Windows 文件互传 1.6、开启NFS服务 1.7、开启SSH服务 2、安装开发工具 2.1、Ubuntu安装VSCode 2.2、Windows安装MobaXterm 安装好Ubuntu系统环…

排序分析(Ordination analysis)及R实现

在生态学、统计学和生物学等领域&#xff0c;排序分析是一种用于探索和展示数据结构的多元统计技术。这种分析方法通过将多维数据集中的样本或变量映射到低维空间&#xff0c;以便更容易理解和可视化数据之间的关系。排序分析常用于研究物种组成、生态系统结构等生态学和生物学…

【Openstack Train安装】十二、Cinder安装

Cinder在块存储资源和计算服务&#xff08;Nova&#xff09;之间提供了一个抽象层。通过Cinder API&#xff0c;块存储可以被管理&#xff08;创建、销毁和分配等&#xff09;&#xff0c;而不需要知道提供存储的底层资源。 本文介绍Cinder安装步骤&#xff0c;Cinder需在控制节…

苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?

如果你正在开发一个iOS应用并准备进行内测&#xff0c;TestFlight是苹果提供的一个免费的解决方案&#xff0c;它使开发者可以邀请用户参加应用的测试。以下是一步步的指南&#xff0c;教你如何利用TestFlight进行内测以便于应用后续可以顺利上架App Store。 1: 准备工作 在测…

怎么一键批量转换PDF/图片为Excel、Word,从而提高工作效率?

在处理大量PDF、图片文件时&#xff0c;我们往往需要将这些文件转换成Word或Excel格式以方便编辑和统计分析。此时&#xff0c;金鸣表格文字识别大师这款工具可以发挥巨大作用。下面&#xff0c;我们就来探讨如何使用它进行批量转换&#xff0c;以实现高效处理。 一、准备工作…

初识elasticsearch

文章目录 一、前言二、了解ES2.1 elasticsearch的作用2.2 ELK技术栈2.3 elasticsearch和lucene2.4 为什么不是其他搜索技术2.5 总结 三、倒排索引3.1 正向索引3.2 倒排索引3.3 正向和倒排 四、es的一些概念4.1 文档和字段4.2 索引和映射4.3 mysql和elasticsearch 一、前言 前一…

StartRocks 连接 Paimon外部表

版本 StartRocksPaimon3.2.00.5 sr 环境准备 CREATE external CATALOG paimon_hdfs PROPERTIES ("type" "paimon",paimon.catalog.type filesystem,"paimon.catalog.warehouse" "hdfs://hadoop03:9000/paimon/test" );mysql> …

高效率:使用DBeaver连接spark-sql

提高运行效率一般采取底层使用spark引擎替换成hive引擎的方式提高效率&#xff0c;但替换引擎配置较为复杂考虑到兼容版本且容易出错&#xff0c;所以本篇将介绍使用DBeaver直接连接spark-sql快速操作hive数据库。 在spark目录下运行以下命令&#xff0c;创建一个SparkThirdSe…

链表高频面试题

1. 两个链表第一个公共子节点 LeetCode160 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; listA [4,1,8,4,5], listB [5…