1. 程式人生 > >實驗: 用CxImage在同一個DC上顯示多幅PNG

實驗: 用CxImage在同一個DC上顯示多幅PNG

CxImage工程rul:

http://www.codeproject.com/KB/graphics/cximage.aspx

下載後,重新調整了CxImage工程的標頭檔案, 在IDE中把CxImage子工程依賴關係和.lib, .h, .dll的輸出重新制定.

修改CxImage自帶的Demo包含的.h,.lib, 除錯目錄, 測試通過.  和原版的效果相同.

另外開工程,在Dlg中同一個Picture Control中顯示一副靜態的png和輪流開啟24幅png用來顯示動畫. 靜態顯示的png效果很好,輪流開啟的png重新整理有問題.

查閱CxImage的跟貼, 發現很多人有這種應用.比如:

1. 從監控用的數字相機中得到圖片後,不定時的顯示在dc上.

2. 由程式控制, 不同條件下,顯示不同圖片.

作者'Davide Pizzolato'沒有給出正面回答. 也許作者已經解決了這個問題。

CxImagtif開啟.tiff檔案可以解決動畫顯示的問題。tiff是256色的, 顯示沒有.png好. tiff是多幀, 可以控制播放指定幀。這個實驗暫時不用播放.tiff的方式, 因為能隨時指定播放哪張圖片更有意義.

現在要從跟貼中找出這種應用的解決方法. 不過這貼子確實太火了,從2001~2010之間跟貼不斷,  翻到70多頁, 還沒翻到第一頁再哪! 得慢慢的來看跟貼。找出這種應用的解決方法.

作者提供了一個demo, 用來在picture control中用cximage顯示圖片.

url: www.xdp.it/tmp/cximage/picturetest.zip

驗證結果: Picture Control 用上面Demo中的程式碼,只能顯示.BMP的資源, PNG的顯示不了.

Picture Control的設定

原始程式碼

實驗程式碼

失敗的顯示效果, 透明的PNG的內容是一個轉動的時鐘指標, 但是顯示成了轉動的黑白塊。

如果Picture 的Type 屬性不是Bitmap, 則什麼都顯示不出來.

作者給出瞭解決方法如下:

it is because that demo uses a subset of CxImage; link the demo or your application to the whole cximage libraries (cximage, lipng, zlib, ...) and you can load also the other file formats

原來沒有連線最完整的CxImageDll.

我編譯CxImage時, 確實沒有注意是否打開了所有圖片格式的開關.晚上再做個實驗來驗證這點.

既然作者這麼說的, 自然他已經過做實驗.