当前位置: 首页 > news >正文

【RK3588嵌入式图形编程】-SDL2-构建模块化UI

构建模块化UI

文章目录

  • 构建模块化UI
    • 1、概述
    • 2、创建UI管理器
    • 3、嵌套组件
    • 4、继承
    • 5、多态子组件
    • 6、总结

在本文中,将介绍如何使用C++和SDL创建一个灵活且可扩展的UI系统,重点关注组件层次结构和多态性。

1、概述

在前面的文章中,我们介绍了应用程序循环和事件循环,这为我们的程序奠定了基础。随着程序和交互的复杂性增加,我们需要在这个基础上构建额外的系统来帮助管理复杂性。

在本文中,我们将深入研究通过实现模块化UI系统来管理复杂的用户界面。我们将涵盖以下关键主题:

  • 创建一个UI管理器来处理事件和渲染
  • 实现嵌套组件以更好地组织
  • 利用继承创建可重复使用的UI元素
  • 使用多态性进行灵活的组件管理

通过本课的学习,您将为构建可扩展和维护性好的UI系统打下坚实的基础。

2、创建UI管理器

我们将从创建一个UI管理器开始,它有两个方法将被我们的应用程序循环调用。

事件将被传递给HandleEvent()方法,使我们的UI能够看到流经我们应用程序的事件,并有机会对它们做出反应。

应用程序循环将在适当的时间调用Render(),传递UI应该渲染到的SDL_Surface。

// UI.h
#pragma once

相关文章:

【RK3588嵌入式图形编程】-SDL2-构建模块化UI

构建模块化UI 文章目录 构建模块化UI1、概述2、创建UI管理器3、嵌套组件4、继承5、多态子组件6、总结在本文中,将介绍如何使用C++和SDL创建一个灵活且可扩展的UI系统,重点关注组件层次结构和多态性。 1、概述 在前面的文章中,我们介绍了应用程序循环和事件循环,这为我们的…...

面向机器学习的Java库与平台简介、适用场景、官方网站、社区网址

Java机器学习的库与平台 最近听到有的人说要做机器学习就一定要学Python,我想他们掌握的知道还不够系统全面。本文作者给大家介绍几种常用Java实现的机器学习库,快快收藏加关注吧~ Java机器学习库表格 Java机器学习库整理库/平台概念适合场…...

基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

ubuntu24基于虚拟机无法从主机拖拽文件夹

以下是解决问题的精简步骤: 安装 open-vm-tools-desktop: bash复制 sudo apt-get install open-vm-tools-desktop 重启虚拟机后,文字复制粘贴功能可正常工作。 禁用 Wayland: 编辑 /etc/gdm3/custom.conf 文件: bash复…...

常用Webpack Loader汇总介绍

引言 在前端项目开发中,Webpack 作为强大的模块打包工具,能够将各种资源进行打包处理。而其中的 Loader 则是 Webpack 处理不同类型文件的关键,它允许 Webpack 不仅仅局限于处理 JavaScript 文件,还能处理 CSS、图片、字体等多种…...

剑指 Offer II 023. 两个链表的第一个重合节点

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20023.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%87%8D%E5%90%88%E8%8A%82%E7%82%B9/README.md 剑指 Offer II 023. 两…...

个人搭建CDN加速服务 特网科技

在互联网快速发展的今天,网站的加载速度对用户体验有着至关重要的影响,传统的网页加载方式依赖于服务器的性能和网络环境,这使得某些网站的页面加载时间过长,用户体验不佳,为了解决这个问题,许多企业开始采…...

用deepseek学大模型08-卷积神经网络(CNN)

yuanbao.tencent.com 从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点&#xf…...

蓝桥杯单片机基础部分——6、555定时器

前言 NE555是一个纯硬件的设计,旦硬件电路确定了,其功能也确定了,没有可编程的部分,也没什么好去理解的地方,如果理解不了就直接背代码,这里也不是很常考,大家了解一下就可以了,知道…...

Python学习心得函数

一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...

神经网络实验——MLP

目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…...

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...

dify-AI 私有部署可修改前端页面

dify文档 官方文档:欢迎使用 Dify | Dify 源码:https://github.com/langgenius/dify.git 安装docker 官网:https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…...

使用 @Results 注解来手动指定字段映射

在 MyBatis 中,Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 Results 和 Result 注解来精确控制每一列与类属性之间的映射关系。 示例:使用 Results 注解来手动指定字段映射 假设你…...

数据治理中 大数据处理一般都遵循哪些原则

在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…...

从0到1:STM32温控系统开发踩坑指南

1. 设计目标 核心功能&#xff1a;实现0-100℃范围内的温度闭环控制 性能指标&#xff1a; 测量精度&#xff1a;0.5℃&#xff08;使用DS18B20传感器&#xff09; 控制响应时间&#xff1a;<5秒 显示分辨率&#xff1a;0.1℃ 扩展功能&#xff1a; LCD实时显示当前温度…...

修改时无条件,可以自定义id条件(通过查询)

在这段代码中&#xff0c;$(row).attr(data-rarity, data.rarity); 的作用是给表格的每一行 (row) 添加一个 data-rarity 的自定义属性&#xff0c;属性的值是该行数据中的 rarity 字段。 解释&#xff1a; 1.row 是当前行的 DOM 元素。 2.data.rarity 是从 data 对象中获取的…...

工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!

在工业制造领域&#xff0c;能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进&#xff0c;如何实现高效能耗管理&#xff0c;成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台&#xff0c;结合其自研的硬件产品&#xff0c;为工业制造企业提供…...

实现一个简单的协同过滤推荐算法

题目描述&#xff1a; 协同过滤是推荐系统中的一种常用技术&#xff0c;其基本思想是利用用户之间的相似性或物品之间的相似性来进行推荐。本次面试题要求实现一个基于用户的协同过滤推荐算法。 具体要求&#xff1a; 定义两个类&#xff1a;User 和 Item&#xff0c;分别表示用…...

eNSP防火墙综合实验

一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...