91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

實戰(zhàn)經驗 | STM32GUI TouchGFX 屏幕切換功能簡介

STM32單片機 ? 來源:未知 ? 2023-11-09 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


關鍵詞:GUI,TouchGFX,Transition


目錄預覽

1、引言

2、TouchGFX屏幕切換功能

3、小結


01

引言


TouchGFX 是專用于 STM32 的圖形界面設計軟件,可基于低成本開發(fā)優(yōu)秀的圖形界面,而且它已變的越來越流行。為了幫助客戶更加深入地理解和使用 TouchGFX ,本文針對TouchGFX 屏幕切換的實現(xiàn)方式進行了介紹。通過簡析基本例程“Transition Example”的源碼,剖析其中切屏實現(xiàn)的流程;并簡介了如何使用 TouchGFX Designer 快捷地修改屏幕切換模式,希望能幫助客戶更好地使用 TouchGFX 切屏特色與功能。


02

TouchGFX屏幕切換功能


2.1. TouchGFX Transition 類介紹


TouchGFX 框架中關于屏幕切換功能,實現(xiàn)了一個 Transition 基類和五個派生類,其關系如下圖圖 1 所示。其中,Transition 是切屏的抽象基類,定義了屏幕切換期間發(fā)生的基本事務。虛函數(shù)主要包括:Init(初始化)、tearDown(銷毀,切屏完成需要的清理過程)、handleTickEvent(Tick 事件處理函數(shù),主要用于完成切屏的動畫效果)、invalidate(失效,用于重繪)等。五個派生類,其中 NoTransition 是最基本的派生類,它沒有任何視覺效果,當前屏幕會直接被新屏內容替換。另外四個派生類則具有動畫效果:BlockTransition、CoverTransition、SlideTransition 和 WipeTransition。


圖1.TouchGFX Transition 類繼承關系


BlockTransition 將屏幕分成 8x6 份塊,在屏幕切換時會每次隨機重繪其中的 2 個塊,比較節(jié)省 MCU 資源,適合性能不高的 MCU;CoverTransition 的動畫效果是“新屏畫面從一個方向移動過來,直至完全覆蓋原屏幕內容”;SlideTransition 的動畫效果是“新屏與原屏拼接在一起,(原屏在前,新屏在后)從指定的方向滑過來”;WipeTransition 的動畫效果是“新屏內容從一個方向展開(有一種擦除原屏,露出新屏的效果)”。BlockTransition、CoverTransition、SlideTransition 和 WipeTransition 均在 handleTickEvent 函數(shù)中實現(xiàn)各自風格的動畫效果,tearDown 函數(shù)中則銷毀切屏過程中創(chuàng)建的用于動畫的臨時快照控件等。下面我們首先生成Transition 例程,并對例程源碼相關部分做進一步的分析。


2.2. TouchGFX Transition 例程


運行 TouchGFX Designer,選擇 Examples;通過 Select Board Setup 選擇 STM32H735G DK 板(也可以是 TouchGFX 適用的其它板件);從眾多例程中選擇“Transition Example”例程;將 Application name 改為 Transition_Example,如下圖圖 2 所示,然后點擊 Create 創(chuàng)建工程。


圖2.TouchGFX Designer 生成 Transition Example 例程


進入 TouchGFX Designer 主界面后,會看到畫布上有四個方向按鈕和一個背景圖片,如下 圖圖 3 所示。我們對界面不做更改,直接選擇 Designer 右下角 (Run Target)在目標板上運行。該操作將會復制 TouchGFX 框架文件,生成配置文件、makefile、代碼及資源文件(images、fonts、texts),然后編譯鏈接、燒錄目標板并運行。程序運行起來后,您可以熟悉一下該例程應用,該應用有 5 個屏幕畫面,一個主屏及上下左右 4 個屏幕。點擊方向按鈕會進行相關方向的切屏。例程中切屏方式是 SlideTransition 模式。下面我們解讀一下相關代碼,再對Transition 模式進行修改。


圖3.TouchGFX Designer Transition Example 設計界面


2.3. 例程代碼解讀與切屏模式修改


2.3.1. 關鍵代碼流程


切屏操作是由點擊按鈕觸發(fā)的,我們以右向按鈕 為例,一步步查看調用過程。首先我們可以確定當前屏幕是 MainView 類,MainView 繼承自 MainViewBase,該 MainViewBase 由Designer 自動生成。它已經包含了四個按鈕、一個背景框和一個背景圖片。按鈕點擊的處理函數(shù)為 buttonCallbackHandler。詳細代碼如下:



我們再來看該按鈕處理函數(shù),這里右向按鈕調用了 application 對象的gotoRightScreenSlideTransitionEast 函數(shù):



在 FrontendApplicationBase 中,gotoRightScreenSlideTransitionEast 接口通過transitionCallback 跳轉到 gotoRightScreenSlideTransitionEastImpl 函數(shù)。具體過程,首先application 事務處理過程中會調用 handlePendingScreenTransition,再轉至函數(shù)evaluatePendingScreenTransition,經 transitionCallback 完成對函數(shù)gotoRightScreenSlideTransitionEastImpl 的調用(更多的關于 Callback 的介紹請參閱相關文檔或 LAT)。如下圖圖 4 所示:


圖4.Transition Callback 的應用過程


具體代碼如下:



函數(shù) gotoRightScreenSlideTransitionEastImpl 中調用了屏幕切換的關鍵模板函數(shù)makeTransition。


2.3.2. 模板函數(shù) makeTransition


下面我們來看一看實現(xiàn)屏幕切換功能的關鍵模板函數(shù) makeTransition。該函數(shù)在MVPApplication.hpp 中,源碼如下:



我們知道 TouchGFX 應用架構是 MVP 架構(這里不做過多介紹,需要了解的客戶請參考相關文檔),這里的 makeTransition 函數(shù)將 TouchGFX 應用中的 View&Presenter 和 model 綁定,并與 transition 聯(lián)系在一起,進而實現(xiàn)切屏功能。具體來說,首先 prepareTransition 函數(shù)對當前的 View/Presenter/Transition 進行銷毀;然后以模板參數(shù) touchgfx::SlideTransition(用戶指定的方向)創(chuàng)建 Transition 派生類對象;以模板參數(shù) ScreenType 類進行新 View 的創(chuàng)建(這里是 RighView);再以模板參數(shù) PresenterType 類創(chuàng)建新的 Presenter(這里是RightPresenter)。將 Presenter 與 Model 綁定并將 View 與 Presenter 綁定(以保證可以正常調用各自接口,實現(xiàn) MVP 架構功能);最后調用 finalizeTransition 函數(shù),在 finalizeTransition 中進行新 View 的 SetupScreen,綁定新 Transition, 并激活新 Transition。


2.3.3. Transition 動畫效果的實現(xiàn)


具體的 Transition 動畫效果是在 Transition 派生類的 handleTickEvent 中實現(xiàn)的。我們例程中是 SlideTransition,其 handleTickEvent 中實現(xiàn)了滑動的效果。將原有屏幕的快照,在滑動方向的來向上與新 View 的快照連接,一起沿滑動方向移動,實現(xiàn)動畫效果。具體請見下面handleTickEvent 函數(shù)源碼:



2.3.4. Transition 風格的修改


模板配合 C++編程給予了 TouchGFX 框架極大的簡潔性和適配的便利性,對于切屏風格的增加或修改也是非常的簡便??蛻羯踔敛恍枰斫馇懊娼榻B的 Transition 具體原理,也能夠非常方便地修改切屏模式。使用 TouchGFX Designer,僅需點擊幾下鼠標即可實現(xiàn)。如下圖圖 5 所示,這里我們在關聯(lián)右向按鈕的 Interaction 中,將 Transition 模式改為了 Wipe 模式,編譯運行即可查看效果。


圖5.TouchGFX Designer Transition 模式的修改


03

小結


TouchGFX 是針對 STM32 產品的專用優(yōu)秀界面設計工具,功能強大易用。本文對屏幕切換功能進行了簡介,從基本示例“Transition Example”出發(fā),對切屏部分的源代碼進行了淺析,并介紹了如何使用 TouchGFX Designer 實現(xiàn)切屏模式的修改。希望本文能夠幫助客戶更深入地理解 STM32 TouchGFX。



完整內容請點擊“閱讀原文”下載原文檔。



原文標題:實戰(zhàn)經驗 | STM32GUI TouchGFX 屏幕切換功能簡介

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6076

    文章

    45495

    瀏覽量

    670367
  • STM32
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373452

原文標題:實戰(zhàn)經驗 | STM32GUI TouchGFX 屏幕切換功能簡介

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    GPS時鐘授時裝置常見問題與實戰(zhàn)經驗分享

    作為一名長期關注時間同步技術的網(wǎng)絡宣傳人員,我經常收到用戶關于GPS時鐘授時裝置的各種咨詢。從電力變電站到5G網(wǎng)絡機房,從自動駕駛測試場到金融數(shù)據(jù)中心,這些設備默默守護著現(xiàn)代社會的精密運轉。今天,我想結合行業(yè)內的技術發(fā)展和實際應用中的經驗,和大家聊聊GPS時鐘授時裝置那些事兒。
    的頭像 發(fā)表于 03-06 11:03 ?19次閱讀
    GPS時鐘授時裝置常見問題與<b class='flag-5'>實戰(zhàn)經驗</b>分享

    STM32H750B-DK開發(fā)板 快速上手&amp;TouchGFX入門

    首先是一段很炫酷的STM32蝴蝶Logo的動畫,而后可以進行功能菜單選擇:左側的STemWin Demo,或者是右側的TouchGFX Demo: ? 點擊下方的“ i ”還可以查看開發(fā)板的一些信息,例如
    發(fā)表于 01-10 02:07

    車載音頻功放芯片實戰(zhàn)經驗與深度疑問

    1. 通道配置與車型需求的適配經驗 在為不同車型設計音響系統(tǒng)時,CD7377CZ 與 CD7388 的通道配置需緊密結合車型空間與用戶需求。例如,針對緊湊型家用轎車,車內空間較小,采用
    發(fā)表于 12-05 09:53

    【課程升級】STM32U5開發(fā)板《TouchGFX 圖形界面開發(fā)》,從快速入門到深度UI實戰(zhàn)教程

    好消息,華清遠見STM32U5開發(fā)板配套課程升級通知!本次升級計劃,主要致力于為初學者提供更深入、更實用的TouchGFX圖形界面開發(fā)學習體驗。01課程升級核心內容快速入門,構建完整學習路徑
    的頭像 發(fā)表于 11-04 11:05 ?455次閱讀
    【課程升級】<b class='flag-5'>STM32</b>U5開發(fā)板《<b class='flag-5'>TouchGFX</b> 圖形界面開發(fā)》,從快速入門到深度UI<b class='flag-5'>實戰(zhàn)</b>教程

    解鎖物聯(lián)網(wǎng)攝像頭潛力:低成本低功耗硬件設計實戰(zhàn)技巧!

    攝像頭是物聯(lián)網(wǎng)視覺感知的關鍵,但高成本與高功耗常成落地阻礙。本文基于實戰(zhàn)經驗,提煉硬件設計實用技巧——從簡化外圍電路到動態(tài)功耗管理,助您以更低成本、更低功耗打造物聯(lián)網(wǎng)攝像頭,適配智能家居、安防監(jiān)控等場景。
    的頭像 發(fā)表于 09-20 15:22 ?1239次閱讀
    解鎖物聯(lián)網(wǎng)攝像頭潛力:低成本低功耗硬件設計<b class='flag-5'>實戰(zhàn)</b>技巧!

    數(shù)據(jù)庫慢查詢分析與SQL優(yōu)化實戰(zhàn)技巧

    今天,我將分享我在處理數(shù)千次數(shù)據(jù)庫性能問題中積累的實戰(zhàn)經驗,幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無論你是剛入門的運維新手,還是有一定經驗的工程師,這篇文章都將為你提供實用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?982次閱讀

    Linux服務器性能調優(yōu)的核心技巧和實戰(zhàn)經驗

    如果你正在為這些問題頭疼,那么這篇文章就是為你準備的!作為一名擁有10年經驗的運維工程師,我將毫無保留地分享Linux服務器性能調優(yōu)的核心技巧和實戰(zhàn)經驗。
    的頭像 發(fā)表于 08-27 14:36 ?1046次閱讀

    STM32項目分享:智能語音臺燈(機智云)

    01—項目簡介1.功能詳解STM32智能語音臺燈(機智云)功能如下:STM32F103C8T6單片機作為主控單元按鍵
    的頭像 發(fā)表于 07-24 18:03 ?1566次閱讀
    <b class='flag-5'>STM32</b>項目分享:智能語音臺燈(機智云)

    Linux開發(fā)板調屏方法,實戰(zhàn)經驗讓您少走彎路

    本文介紹Linux系統(tǒng)調試屏幕過程中檢查屏幕狀態(tài)及信息的方法。如:驅動、屏幕連接、分辨率、色彩等狀態(tài)?;谟|覺智能RK3562開發(fā)板演示,搭載4核A53處理器,主頻高達2.0GHz;內置獨立
    的頭像 發(fā)表于 06-06 18:13 ?769次閱讀
    Linux開發(fā)板調屏方法,<b class='flag-5'>實戰(zhàn)經驗</b>讓您少走彎路

    移植touchgfx之后stm32不運行程序怎么解決?

    MCU:STM32U585CIU6 cubemx:6.14 touchgfx:25 我在cubemx配置生成touchgfx的初始化,時基是TIM7,沒有用RTOS,生成之后再用designer隨便
    發(fā)表于 06-06 07:43

    移動電源EMC整改:認證失敗到一次通過的實戰(zhàn)經驗

    深圳南柯電子|移動電源EMC整改:認證失敗到一次通過的實戰(zhàn)經驗
    的頭像 發(fā)表于 05-26 11:25 ?849次閱讀
    移動電源EMC整改:認證失敗到一次通過的<b class='flag-5'>實戰(zhàn)經驗</b>

    迅為RK3568驅動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復用功能

    迅為RK3568驅動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復用功能
    的頭像 發(fā)表于 05-22 14:27 ?2099次閱讀
    迅為RK3568驅動指南GPIO子系統(tǒng)<b class='flag-5'>實戰(zhàn)</b>:實現(xiàn)動態(tài)<b class='flag-5'>切換</b>引腳復用<b class='flag-5'>功能</b>

    AWTK:一鍵切換皮膚,打造個性化UI

    視頻推薦想讓你的應用在不同場景下都能完美呈現(xiàn)嗎?皮膚切換功能必不可少!本文將介紹AWTK,一款強大的GUI框架,它通過內置資源管理和優(yōu)化緩存,輕松實現(xiàn)皮膚切換
    的頭像 發(fā)表于 04-09 13:00 ?911次閱讀
    AWTK:一鍵<b class='flag-5'>切換</b>皮膚,打造個性化UI

    STM32項目分享:STM32智能語音臺燈

    —項目簡介1.功能詳解STM32智能語音臺燈功能如下:1.STM32F103C8T6單片機系統(tǒng)板作為主控單元2.按鍵
    的頭像 發(fā)表于 03-15 10:02 ?3039次閱讀
    <b class='flag-5'>STM32</b>項目分享:<b class='flag-5'>STM32</b>智能語音臺燈

    請問stm32L562中如何開發(fā)TouchGFX?

    TouchGFX生成相關程序及文件 在cubeMX中找到開發(fā)板stm32L562eDK,在其中是能fmc,crc,freertos,x-cube-touchgfx生成相關代碼輸入程序后,黑屏。請教高手,還缺什么步驟?
    發(fā)表于 03-07 06:11