Last update: 2009-05-09 (土) 14:44:32
Mobileメモ:GIF画像表示
WindowsMobileでGIF画像を表示する方法
Windows MobileでGIF画像を表示する方法です。
関数
Windows MobileではWindowsで使用しているOleLoadPicture()関数が使用できません。
olectl.hには記載されていますが、ライブラリは存在しません。
その代わりに以下の関数を使用します。
HBITMAP SHLoadImageFile ( LPCTSTR pszFileName );
ファイル名を指定するだけなので、OleLoadPicture()より遥かに簡単です。
準備
SHLoadImageFile()関数を使用する場合は、aygshell.hをインクルードする必要があるので
#include <aygshell.h>
としておく必要があります。
またaygshell.libをリンクする必要があるので、プロジェクトに追加するか、ソースファイルに
#pragma comment( lib, "aygshell.lib" )
の行を追加しておきましょう。
使い方
SHLoadImageFile()関数は以下の画像ファイルを読み込み自動変換してHBITMAPとして返します。
- GIF (Graphics Interchange Format)
- PNG (Portable Network Graphics)
- JPG (Joint Photographic Experts Group)
- ICO (icon)
- BMP (bitmap)
後はHBITMAPとしてSelectObject()とBltBit()等で表示するだけです。
ただし、透過GIFとアニメーションGIFには非対応。
アニメーションGIFは最初の1枚だけが表示されます。
透過GIFについてはフォーマットを解析して透過色のRGBを抜き出してTransparentBlt()を使いましょう。
参考
Windows Mobile 5.0以上ではImaging APIが使用可。
- Windows Embedded Developer Center
- Windows Mobile 6 Professional SDKの場合は(SDKのフォルダ)\Samples\Common\CPP\Win32\Imaging
ただし、Imaging APIでもとアニメーションGIFには非対応のようです。