天天看點

emwin讀取sd圖檔_第14篇emWin(UCGUI)PNG圖檔顯示.pdf

安富萊STM32-V5開發闆STemWin教程

安富萊STM32-V5開發闆STemWin教程

第14章 PNG 圖檔顯示

本期主要講 STemWin 支援的 PNG 圖檔的顯示,官方支援的主要有兩種顯示方法,一種是從外部存儲

器讀取資料到内部存儲器 ,然後來顯示圖檔,這種的顯示速度要快些,另一種方法是直接從外部存儲器讀取

資料并顯示,這種辦法的好處就是不要大的 RAM 需求,每次讀取一些資料顯示一次,壞處就是顯示速度比

較的慢。

這裡将 2MB 的外部 SRAM 做為 emWin 的動态記憶體,PNG 的圖檔顯示相當耗費 RAM。

有一點在這裡提前得和大家說明,對于 PNG 的庫 ,STemWin 裡面是不帶的,需要自己添加, SEGGER

的官網下載下傳,這個庫是來自 libpng ,官網

14 1 PNG 圖檔支援

14. 2 繪制已經加載到存儲器的 PNG 圖檔

14. 3 繪制無須加載到存儲器的 PNG 圖檔

14. 4 實驗總結

14.1 PNG 圖檔支援

PNG 圖檔支援

PNG (可移植的網絡圖形)格式是一種圖像格式,它利用非專利的資料壓縮方法提供無損的資料壓縮

和 Alpha 混合。PNG 1.0 版規範于 1996 年釋出。到 2003 年末,PNG 成為國際标準(ISO/IEC15948)。

emWin 對 PNG支援的實施基于來自 Glenn Randers-Pehrson、Guy Eric Schalnat 和 Andreas Dilger

的“libpng”庫,該庫可在 下免費獲得。emWin 對該庫的使用符合 GUI\ PNG\png.h 中

的版權通知,通知中允許使用該庫,而沒有任何限制。

圖形庫首先對圖形資訊進行解碼。如果必須繪制圖像,解碼流程将花費相當長的時間。如果在視窗管

理器經常調用的 callback 例程中使用 PNG 檔案,則解碼流程可能花費相當長的時間。通過使用儲存設備可

縮短計算時間。最好的方法是先将圖像繪制到儲存設備中。在這種情況下,将隻進行一次解壓縮。

SEGGER 官網下載下傳的 png 如下,這裡我們使用最新的 5.18 版本:

14.1.1 PNG 格式圖示轉換

某些情況下,将 PNG 檔案作為 C 檔案添加到項目中非常有用。對此,可完全按照前面介紹的“JPEG

檔案支援”下的相同方式來執行。此外,位圖轉換器能夠加載 PNG 檔案并将它們轉換為 C 位圖檔案。下面

第 1 頁 共 8 頁

第 1 頁 共 8 頁

安富萊STM32-V5開發闆STemWin教程

安富萊STM32-V5開發闆STemWin教程

舉一個例子,跟大家示範下:比如我們要轉換如下的 PNG 圖示:

 打開軟體加載上面的圖檔

 加載後點選 Convert 即可,點選後沒有任何現象,直接去圖檔所在的檔案夾找即可

實際運作代碼如下(圖檔資料就不貼出來了,看本期教程配套的例子 )

void MainTas