在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

【AWTK使用經驗】加載和釋放外部圖片

ZLG致遠電子 ? 2024-04-26 08:25 ? 次閱讀

AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載外部資源?如何設計自定義進度條?這些都會在系列文章進行解答。

加載指定路徑的圖片資源

AWTK默認加載資源方式有兩種,一種是將資源打包到程序中放入Flash,另一種是放在res資源目錄中。假設現在需要實現一個圖片瀏覽器并移植到 ZTP800示教器 設備上,該圖片瀏覽器需要加載U盤圖片,此時就要用到AWTK加載外部資源的功能來實現該需求。下面將分為有文件系統和無文件系統兩種情況來介紹此功能。7482606a-0363-11ef-9118-92fbcf53809c.png圖1ZTP800示教器加載U盤圖片效果

1. 有文件系統

在有文件系統時若想加載非AWTK默認目錄結構的圖片資源,可以使用:file://+圖片所在路徑的形式來加載圖片,并且可以使用C代碼或者xml形式來加載。

1.1 C代碼方式:

widget_t*image=widget_lookup(win,"image",TRUE);image_set_image(image, "file:///media/sda1/AWTK.png");

1.2 XML方式:

window>

2. 無文件系統

若是在沒有文件系統的設備中加載外部圖片,可以先讀取圖片文件數據,再將數據作為參數傳給 assets_manager_add_data()函數。該函數會將數據添加到AWTK資源管理器中,添加后就可以通過文件名的形式來顯示圖片了。

下面是一段STM32平臺加載SD卡圖片的示例代碼:

uint8_tread_buffer[512];intsdcard_status=HAL_SD_ReadBlocks(&sd_handle,(uint8_t*)read_buffer,0,1,0xffff);if(sdcard_status==HAL_OK){ assets_manager_add_data(assets_manager(),"AWTK",ASSET_TYPE_IMAGE,ASSET_TYPE_IMAGE_PNG,read_buffer,size); image_set_image(image,"AWTK");}


釋放圖片資源并重新加載

假設目前實現了圖片瀏覽器并移植到了ZTP800示教器上,但是需要圖片瀏覽器加載的圖片名稱固定不變,而本地圖片數據會經常發生改變,這時候就需要在AWTK重新加載并更新圖片到畫面中。

AWTK在加載一張圖片時,會先將圖片緩存到assets_manager資源管理器當中,接著再解碼放到image_manager圖片管理器,最后顯示的圖片來自圖片管理器解碼好的圖片,因此對于上面的需求就要手動卸載與重新加載圖片緩存。下圖為ZTP800示教器上的示例程序重新加載圖片前后效果圖:

749d8ec6-0363-11ef-9118-92fbcf53809c.png

圖2示例程序的初始圖

74b8d47e-0363-11ef-9118-92fbcf53809c.png

圖2示例程序的初始圖

1. 卸載圖片緩存

假設在示例程序中已經加載并顯示了一張圖片,并且此時本地圖片文件數據發生了改變,可以按照以下步驟卸載圖片管理器和資源管理器上的圖片緩存。

#defineIMAGE_NAME"/media/sda1/AWTK.png"http://圖片名默認為assets_manager_load_file加載的路徑
staticret_ton_unload_button_click(void*ctx,event_t*e){//點擊卸載圖片按鈕卸載圖片緩存 bitmap_tbitmap={0}; widget_t*win=WIDGET(ctx); widget_t*image=widget_lookup(win,"image",TRUE);
//卸載圖片管理器緩存image_manager_get_bitmap(image_manager(),IMAGE_NAME,&bitmap);image_manager_unload_bitmap(image_manager(),&bitmap);
//卸載資源管理器緩存assets_manager_clear_cache_ex(assets_manager(),ASSET_TYPE_IMAGE,IMAGE_NAME);widget_invalidate(image,NULL);
returnRET_OK;}

上面代碼中image_manager_unload_bitmap是用于卸載圖片在圖片管理器的緩存卸載緩存成功后會輸出“unload image xxx”的debug信息;assets_manager_clear_cache_ex是用于卸載資源管理器的該圖片緩存。

2. 重新加載圖片緩存

卸載圖片緩存后,可以通過以下步驟再次加載圖片到資源管理器中:

staticret_ton_load_button_click(void*ctx,event_t*e){//點擊加載圖片按鈕重新加載圖片緩存 widget_t*win=WIDGET(ctx); widget_t*image=widget_lookup(win,"image",TRUE);
//將新的圖片數據添加到資源管理器緩存中 asset_info_t*img=assets_manager_load_file(assets_manager(),ASSET_TYPE_IMAGE,IMAGE_NAME); assets_manager_add(assets_manager(), img);
image_set_image(image, IMAGE_NAME);
widget_invalidate(image,NULL);
returnRET_OK;}

上面代碼調用assets_manager_load_file與assets_manager_add重新加載了一次圖片數據到AWTK資源管理器的緩存,此時加載的數據是新的圖片數據。

后續在調用image_set_image以及widget_invalidate刷新圖片控件時會自動將位于資源管理器的緩存解碼并放到圖片管理器當中,最后顯示新的圖片數據。

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

    關注

    3

    文章

    670

    瀏覽量

    40454
  • 示教器
    +關注

    關注

    2

    文章

    30

    瀏覽量

    3876
  • awtk
    +關注

    關注

    0

    文章

    48

    瀏覽量

    323
收藏 人收藏

    評論

    相關推薦

    AWTK使用經驗】如何響應物理按鍵

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 06-06 08:25 ?994次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何響應物理按鍵

    AWTK使用經驗】如何添加中文輸入法

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 06-20 08:25 ?1272次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何添加中文輸入法

    AWTK使用經驗】如何更換AWTK SDK與渲染模式

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何播放攝像頭畫面?如何更換
    的頭像 發表于 08-01 08:25 ?1317次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    什么是AWTKAWTK有哪些主要特色?

    什么是AWTKAWTK有哪些主要特色?
    發表于 06-16 06:43

    AWTK主要特色

    一、前言剛拿到字節offer,經歷了5次面試,其中4輪技術面,1輪HR面試。在這里分享一下自己的面試經驗和學習心得。希望能夠幫助更多的小伙伴。我本科畢業于四川師范學院計算機系,剛畢業時也是小白,也是
    發表于 08-20 07:28

    請問一下怎樣使用AWTK Designer把圖片文件打包成數據的

    請問一下怎樣使用AWTK Designer把圖片文件打包成數據的?
    發表于 02-10 07:40

    基于openharmony適配移植的圖片加載

    項目介紹 項目名稱:Sketch 所屬系列:openharmony的第三方組件適配移植 功能:一款強大且全面的圖片加載器,除了圖片加載的必備功能外,還支持 GIF,手勢縮放、分塊顯示超
    發表于 03-22 14:41 ?3次下載

    如何在LabVIEW中清晰加載圖片呢?

    有開發者提出,在使用LabVIEW開發圖片加載顯示程序時,為什么明明看著很清晰的圖片,LabVIEW加載顯示后就變得粗糙,線條不流暢。
    的頭像 發表于 12-20 09:08 ?2371次閱讀
    如何在LabVIEW中清晰<b class='flag-5'>加載</b><b class='flag-5'>圖片</b>呢?

    AWTK使用經驗】如何設計立體電池進度條?

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 04-18 08:25 ?600次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何設計立體電池進度條?

    AWTK使用經驗】如何自定義combo_box下拉框樣式

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 05-23 08:25 ?644次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何自定義combo_box下拉框樣式

    AWTK使用經驗】如何播放視頻或攝像頭畫面

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 07-04 08:25 ?980次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何播放視頻或攝像頭畫面

    AWTK使用經驗】如何實現序列幀動畫

    AWTK是基于C語言開發的跨平臺GUI框架。《AWTK使用經驗》系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何加載
    的頭像 發表于 07-18 08:25 ?619次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何實現序列幀動畫

    AWTK使用經驗】如何在AWTK顯示阿拉伯文本

    AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案,例如:如何播放視頻或攝像頭畫面?如何播放序列幀動畫?這些都會在系列文
    的頭像 發表于 09-12 08:07 ?528次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何在<b class='flag-5'>AWTK</b>顯示阿拉伯文本

    AWTK使用經驗】如何裁剪字庫以及如何使用點陣字

    AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案。AWTK如何裁剪字庫在
    的頭像 發表于 10-10 08:05 ?421次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何裁剪字庫以及如何使用點陣字

    AWTK使用經驗】如何使用系統輸入法與開啟最大化窗口功能

    導讀AWTK是基于C語言開發的跨平臺GUI框架。AWTK使用經驗系列文章將介紹開發AWTK過程中一些常見問題與解決方案。AWTK具有跨平臺的
    的頭像 發表于 11-14 01:05 ?449次閱讀
    【<b class='flag-5'>AWTK</b>使用<b class='flag-5'>經驗</b>】如何使用系統輸入法與開啟最大化窗口功能
    主站蜘蛛池模板: 欧美亚洲三级 | 同性恋激情视频 | 国产一级大片在线观看 | 国产亚洲一区二区精品 | 国产美女亚洲精品久久久久久 | 国产黄色大片又色又爽 | 在线 你懂 | 午夜视频在线 | 六月色 | 欧美xxxxbbbb | 国模啪啪一区二区三区 | 高清不卡免费一区二区三区 | 午夜视频在线观看免费观看在线观看 | 四虎国产永久在线精品免费观看 | 天天看夜夜操 | 美女下面小内内的沟 | 天天干天天射天天 | 在线电影你懂得 | 欧美特黄特色aaa大片免费看 | 天天色天天摸 | 国产精品久久久久国产精品三级 | 日本免费色视频 | 在线观看免费午夜大片 | 男男扒开后菊惩罚 | 日本黄视频在线播放 | aaa在线观看高清免费 | 野外啪啪抽搐一进一出 | 欧美一级黄色录相 | 永久黄网站色视频免费观看99 | 天天干天天摸 | 成熟女人免费一级毛片 | 在线 你懂 | 小草影院亚洲私人影院 | 免费一级特黄视频 | 亚洲爱婷婷色婷婷五月 | 黄色国产在线视频 | 欧亚激情偷乱人伦小说视频 | 奇米777狠狠 | 91大神在线精品视频一区 | h免费在线观看 | 亚洲艹 |