【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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70549.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第四屆圖像、信號處理與模式識別國際學術會議(ISPP 2025)

重要信息 會議官網:www.icispp.com 會議時間:2025年3月28-30日 會議地點:南京 簡介 由河海大學和江蘇大學聯合主辦的第四屆圖像、信號處理與模式識別國際學術會議(ISPP 2025) 將于2025年3月28日-30日在中國南京舉行。會議主…

低代碼與開發框架的一些整合[2]

1.分析的項目資源說明 經過近期的的不斷分析與運行對比,最終把注意力集中在了以下幾個框架: 01.dibootdiboot.diboot: 寫的更少, 性能更好 -> 為開發人員打造的低代碼開發平臺。Mybatis-plus關聯查詢,關聯無SQL,性能高10倍&a…

Spring Boot 中事務的用法詳解

引言 在 Spring Boot 中,事務管理是一個非常重要的功能,尤其是在涉及數據庫操作的業務場景中。Spring 提供了強大的事務管理支持,能夠幫助我們簡化事務的管理和控制。本文將詳細介紹 Spring Boot 中事務的用法,包括事務的基本概…

Java面試——Tomcat

優質博文:IT_BLOG_CN 一、Tomcat 頂層架構 Tomcat中最頂層的容器是Server,代表著整個服務器,從上圖中可以看出,一個Server可以包含至少一個Service,用于具體提供服務。Service主要包含兩個部分:Connector和…

第4章 信息系統架構(三)

4.3 應用架構 應用架構的主要內容是規劃出目標應用分層分域架構,根據業務架構規劃目標應用域、應用組和目標應用組件,形成目標應用架構邏輯視圖和系統視圖。從功能視角出發,闡述應用組件各自及應用架構整體上,如何實現組織的高階…

python小項目編程-中級(1、圖像處理)

目錄 圖像處理 實現 測試 unittest pytest 圖像處理 實現界面化操作,使用PIL庫實現簡單的圖像處理功能,如縮放(設置縮放比例)、旋轉和濾鏡、對比度調整、亮度調整、灰度圖、二值化圖(二值圖如果使用的是彩色圖片需…

【Leetcode 每日一題】2209. 用地毯覆蓋后的最少白色磚塊

問題背景 給你一個下標從 0 0 0 開始的 二進制 字符串 f l o o r floor floor,它表示地板上磚塊的顏色。 f l o o r [ i ] floor[i] floor[i] 為 ‘0’ 表示地板上第 i i i 塊磚塊的顏色是 黑色 。 f l o o r [ i ] floor[i] floor[i] 為’1’ 表示地板上第 i …

Docker 性能優化指南

Docker 提供了強大的容器化功能,能夠幫助開發者在不同的環境中構建、測試和部署應用。然而,隨著容器化應用的不斷增長,Docker 容器可能會面臨一些性能瓶頸,影響其運行效率、資源占用和擴展能力。為了確保容器在生產環境中的高效運…

2025 WE DAY品牌日| 天璇II WE X7 Pro充電樁震撼發布,能效電氣開啟充電革命

隨著新能源產業的迅猛發展,充電樁作為電動汽車能量補給的重要基礎設施,正在成為市場關注的焦點。能效電氣作為充電樁領域的佼佼者,專注于研發高效、智能的充電解決方案,為電動汽車的普及與可持續發展鋪設了堅實的基礎。 2025年2月21日,能效電氣在深圳盛大舉辦了以“以創新 引未…

< OS 有關 > Ubuntu 24 SSH 服務器更換端口 in jp/us VPSs

原因: 兩臺 VPS 的 ssh 端口一直被密碼重試, us 這臺已經封了 632, jp 這臺兩周前清過一次 sqlite3 數據,現在贊到 1008 Fail2Ban 是使用 sqlite3 來記錄,數據量大后,硬盤的 I/O 會飆升,我有寫過一個 app…

MATLAB學習之旅:數據插值與曲線擬合

在MATLAB的奇妙世界里,我們已經走過了一段又一段的學習旅程。從基礎的語法和數據處理,到如今,我們即將踏入數據插值與曲線擬合這片充滿魅力的領域。這個領域就像是魔法中的藝術創作,能夠讓我們根據現有的數據點,構建出更加豐富的曲線和曲面,從而更好地理解和描述數據背后…

若依-@Excel新增注解numberFormat

Excel注解中原本的scale會四舍五入小數,導致進度丟失 想要的效果 顯示的時候保留兩個小數真正的數值是保留之前的數值 還原過程 若以中有一個專門的工具類,用來處理excel的 找到EXCEL導出方法exportExcel()找到writeSheet,寫表格的方法找到填充數據的方法…

LeetCode 熱題 100_搜索二維矩陣(64_74_中等_C++)(二分查找)(暴力破解法;Z字形查找;一次二分查找)

LeetCode 熱題 100_搜索二維矩陣(64_74) 題目描述:輸入輸出樣例:題解:解題思路:思路一(暴力破解法):思路二(Z字形查找):思路三&#x…

從CNN到Transformer:遙感影像目標檢測的技術演進(礦產勘探、精準農業、城市規劃、林業測量、軍事目標識別和災害評估等)

在遙感影像分析領域,目標檢測一直是研究熱點之一。隨著高分辨率對地觀測系統的不斷發展,遙感影像的分辨率和數據量呈爆發式增長,如何高效、準確地從海量數據中提取有用信息,成為了一個亟待解決的問題。近年來,深度學習…

【rt-thread】rt-thread 控制 led 的兩種方式

1. pin設備 #define LED_PIN 3int led(void) {rt_uint8_t count;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for(count 0 ; count < 10 ;count){ rt_pin_write(LED_PIN, PIN_HIGH);rt_kprintf("led on, count : %d %d\r\n", count, rt_pin_read(LED_PIN));…

Excell 代碼處理

文章目錄 Excell 代碼處理cvc格式xlsl格式小結 Excell 代碼處理 有時候要對excell進行分析&#xff0c;或者數據的導入導出&#xff0c;這個時候如果可以用代碼讀寫分析操作那么會方便很多 cvc格式 CSV&#xff08;Comma-Separated Values&#xff0c;逗號分隔值&#xff09;是…

新手小白如何挖掘cnvd通用漏洞之存儲xss漏洞(利用xss釣魚)

視頻教程和更多福利在我主頁簡介或專欄里 &#xff08;不懂都可以來問我 專欄找我哦&#xff09; 如果對你有幫助你可以來專欄找我&#xff0c;我可以無償分享給你對你更有幫助的一些經驗和資料哦 目錄&#xff1a; 一、XSS的三種類型&#xff1a; 二、XSS攻擊的危害&#x…

代碼隨想錄算法【Day52】

Day51 101. 孤島的總面積 思路 從周邊找到陸地然后 通過 dfs或者bfs 將周邊靠陸地且相鄰的陸地都變成海洋&#xff0c;然后再去重新遍歷地圖 統計此時還剩下的陸地 代碼 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …

Python開源項目月排行 2024年12月

#2024年12月2025年1月21日1DeepSeek-Coder-V2一個開源的專家混合&#xff08;MoE&#xff09;代碼語言模型&#xff0c;其在代碼特定任務中的性能可與GPT4-Turbo相媲美。具體而言&#xff0c;DeepSeek-Coder-V2是在DeepSeek-V2的一個中間檢查點上進一步預訓練的&#xff0c;增加…

Resource not found: roslaunchROS path [0]=/opt/ros/noetic/share/ros

解決辦法&#xff1b; cd ~/catkin_ws rm -rf build/ devel/ catkin_make source devel/setup.bash sudo apt-get install ros-noetic-roslaunch 輸入roscore后