<二>Qt斗地主游戏开发:过场动画的实现

news2024/9/20 18:43:48

1. 过场动画效果

在这里插入图片描述

2. 思路分析

  过场动画较为简单,只有一个进度条在进行滚动,因此实现起来不需要动画相关处理,仅需要图片和定时器设定,让进度条动起来即可。我们可以创建一个对话框,设定背景图片以及对话框透明无边框,然后想办法让进度条动起来。所需素材图片如下:
在这里插入图片描述
  我们只需要按照定时器设定,定时截取第二张图片中的一部分,用来覆盖刷新第一张图片中进度条框的进度即可。

3. 代码分析

3.1 创建对话框

  基于QWidget类新建QCutScene过场动画类。

//加载过场动画
class QCutScene : public QWidget
{
	Q_OBJECT

public:
	explicit QCutScene(QWidget* parent = nullptr);
	~QCutScene();

signals:

protected:
	void paintEvent(QPaintEvent* event);

private:
	QPixmap m_background;
	QPixmap m_progress;
	int m_nStep = 15;
};
3.2 设定对话框属性

  去除窗体边框–设置窗体背景透明–设置背景图片。

// 设置背景图片
m_background.load(":/images/cutscene.png");

// 设定窗体大小与图片相等
setFixedSize(m_background.size());

// 去除窗体边框
setWindowFlags(Qt::FramelessWindowHint | windowFlags());

// 设置窗体背景透明
setAttribute(Qt::WA_TranslucentBackground);
3.3 进度条滚动

  首先我们新建一个定时器,用来定时更新重绘背景图片,其中update()更新函数会自动调用paintEvent()函数。此外我们需要保证progress.png图片的高度宽度与背景图片中进度条框的高度宽度相等,这样使用QPixmap 的copy()函数可以定时拷贝进度条图片的一部分进行图片叠加覆盖,实现动态滚动的效果。

    QPixmap pixmap(":/images/progress.png");
	QTimer* pTimer = new QTimer(this);
	connect(pTimer, &QTimer::timeout, this, [=]() {
		m_progress = pixmap.copy(0, 0, m_nStep, pixmap.height());
		update();
		if (m_nStep >= pixmap.width())
		{
			pTimer->stop();
			pTimer->deleteLater();
			MainGamePanel* pGamePanel = new MainGamePanel;
			pGamePanel->show();
			close();
		}
		m_nStep += 5;
		});

	pTimer->start(15);
void QCutScene::paintEvent(QPaintEvent* event)
{
	Q_UNUSED(event)
	QPainter painter(this);
	painter.drawPixmap(rect(), m_background);

	// (62,417)是背景图片中进度条的左上角坐标
	painter.drawPixmap(62, 417, m_progress.width(), m_progress.height(), m_progress);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构初阶】七、非线性表里的二叉树(堆的实现 -- C语言顺序结构)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】六、线性表中的队列(链式结构实现队列)-CSDN博客 1 . 非线性表里的 树(Tree) 树的概念及结构: 树的概念 树是一种非线性的数据…

“牛市陷阱?还是回调?是好?还是坏!“

比特币六年来首次在9月实现正回报 比特币回调:发生了什么以及接下来会发生什么? 美元的主导地位:揭示美元涟漪效应 长期持有者持有的比特币供应比例正式达到历史新高 比特币六年来首次在9月实现正回报 随着 10 月份的到来,比特币6年来首次在9月份实…

图像上传功能实现

一、后端 文件存放在images.path路径下 package com.like.common;import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annot…

交通物流模型 | 基于时空注意力融合网络的城市轨道交通假期短时客流预测

短时轨道交通客流预测对于交通运营管理非常重要。新兴的深度学习模型有效提高了预测精度。然而,大部分现有模型主要针对常规工作日或周末客流进行预测。由于假期客流的突发性和无规律性,仅有一小部分研究专注于假期客流预测。为此,本文提出一个全新的时空注意力融合网络(ST…

微信公众号怎么把个人改成企业?

公众号迁移有什么作用?只能变更主体吗?很多小伙伴想做公众号迁移,但是不知道公众号迁移有什么作用,今天跟大家具体讲解一下。首先公众号迁移最主要的就是修改公众号的主体了,比如我们公众号原来是A公司的,现…

Go 语言内置类型全解析:从布尔到字符串的全维度探究

目录 一、布尔类型定义基础用法声明与初始化逻辑运算 进阶用法条件语句循环结构函数返回值 常见错误与陷阱 二、整数类型定义基础用法声明与初始化运算符位运算 进阶用法数据溢出类型转换类型推断 特殊整数类型runebyte 常见问题和陷阱 三、浮点数类型定义基础用法声明与初始化…

IBT机考-PBT笔考,优劣分析,柯桥口语学习,韩语入门,topik考级韩语

IBT机考,顾名思义就是在电脑上答题考试,区别于现在的PBT纸笔答题,不需要发卷、收卷,也不需要填涂和用笔写字。 考试不需要带任何文具,就连笔试要用到的修正带都将省去。因为听力、阅读的选择题都是用鼠标点击&#xf…

深入了解 RabbitMQ:高性能消息中间件

目录 引言:一、RabbitMQ 介绍二、核心概念三、工作原理四、应用场景五、案例实战 引言: 在现代分布式系统中,消息队列成为了实现系统间异步通信、削峰填谷以及解耦组件的重要工具。而RabbitMQ作为一个高效可靠的消息队列解决方案,…

eNSP网络实验

二层VLAN 四台PC的IP地址如图所示,子网掩码均为255.255.255.0,四台PC处在同一个局域网之中,在配置VLAN之前能够彼此ping通。配置的目的是将PC1和PC3划分到VLAN10中,PC2和PC4划分到VLAN20中。 在配置之前需要进入系统视角。 创建V…

点餐小程序实战教程03-用户注册

我们上一篇介绍了如何创建用户数据源,有了数据源之后就需要思考如何判断用户是否注册过。根据用户在系统中的状态来判断是引导到注册页面还是直接显示首页。 1 前端API 判断用户是否注册,需要拿到用户登录状态的信息。我们在上一篇已经分析了微搭支持的…

线程的详解

创建状态 就绪状态 阻塞状态 运行状态 死亡状态 常用方法 setPriority(ing newPriority) 更改线程的优先级 sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠 join() 等待该线程终止 yield() 暂停当前正在执行的线程对象,并执行其他线程 inte…

51单片机+EC11编码器实现可调参菜单+OLED屏幕显示

51单片机+EC11编码器实现可调参菜单+OLED屏幕显示 📍相关篇《stc单片机使用外部中断+EC11编码器实现计数功能》 🎈《STC单片机+EC11编码器实现调节PWM输出占空比》 🌼实际操作效果 🍁整个项目实现框架: 📓EC11接线原理图: 📓项目工程简介 📝仅凭借一个EC11编…

Python爬虫解决中文乱码

目录 一、中文乱码 二、chardet.detect()解决 三、在页面查找编码格式解决 一、中文乱码 问题在于文本的编码格式不正确 import requestsurlhttps://www.shicimingju.com/book/sanguoyanyi.html headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKi…

标准差椭圆算法实现

一、标准差椭圆介绍 (一)方法介绍 标准差椭圆是一种用于描述多元数据集的离散程度和相关性的可视化工具。它可以帮助我们直观地了解数据的分布情况、方向和离散程度,以及不同变量之间的关系。 标准差椭圆的计算公式如下:…

模型训练环境相关(CUDA、PyTorch)

模型训练环境相关(CUDA、PyTorch) 1. 查看当前 GPU 所能支持的最高版本的 CUDA2. 如何判断是否安装了 CUDA3. 安装 PyTorch3.1 创建虚拟环境3.2 激活并进入虚拟环境3.3 安装 PyTorch 1. 查看当前 GPU 所能支持的最高版本的 CUDA 打开 NVIDIA 控制面板&a…

【Java】抽象类案例

需求:加入我们在开发一个系统时 需要对员工(Employee)类进行设计,员工包含3个属性:姓名、工号(number)以及工资(salary)。 经理(Manager)也是员工…

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

机器视觉工程师努力工作确实不一定涨工资,但是努力工作,确实有很大可能涨工资

机器视觉工程师努力工作确实不一定涨工资,但是努力工作,确实有很大可能涨工资 其实在我们机器视觉工程张薪资方面,正常是一年两次调整周期。

基于Java的网上邮轮预定系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

中秋时节赏明月,五子棋戏月饼趣 — Flutter中秋限定版五子棋

前言 当中秋时节来临,我们都期待着与亲人朋友共度这个美好的节日。这个时候,除了传统的赏月和品尝美味的月饼,我还有一个特别的建议——尝试一款有趣的Flutter五子棋游戏!这款五子棋游戏以中秋为主题,游戏的棋子也可爱…