Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Direct2DとWindows Imaging Component(WIC)で透過PNGを表示

スポンサードリンク

Direct2Dを使ってPNG画像を表示するいい方法はないか模索していたところ、
Windows Imaging Component(WIC)というのを見つけましたが、しばらくこれどうやって使うの?
状態が続いており、いろんなサイトを読んでみるも挫折……
と思ったところ神!!!といえるようなサイトを発見し、そこの解説を読んで、
一応一つのコードにまとめました。長いんでGistに貼り付けました。
作り方はWin32プロジェクト作って変更していくスタイルです。
ひな形をVisual Studioに作らせてADDとかMODとかDELとか書いているところを変更しただけです。
Windows APIの最低限の知識がないと意味不明です。
あとちょっとだけでもCOM知ってないとなんじゃこりゃですw

作成環境

Windows 8.1
Visual Studio 2013 Professional
※ExpressだとATLが使えないので、CComPtrが使えないですので、代替の_com_ptr_tを使えばいいそうです。
※_com_ptr_tは古いのでMicrosoft::WRL::ComPtrのほうが良いです。

作成方法

ファイル > 新規作成 > プロジェクト
Visual C++のWin32 プロジェクトを選択し
プロジェクト名をD2DTest01とかにしておく。
デフォルト設定のままプロジェクトを作成。
プロジェクトを右クリックしてプロパティで
Debug/Releaseともに
構成プロパティのリンカー > 入力 > 追加の依存ファイル
先頭に以下を追加して下さい
d2d1.lib;WindowsCodecs.lib;
あとはD2DTest01.cppのWinMainがあるソースを下記のように変更する。

ソース

2014/11/14追記
COM用のスマートポインタにCComPtrとCComQIPtrとを不適切に使っていた箇所がありました。
今回の場合はCComPtrだけで用が足りますので修正しておきました。
なお、CComPtrとCComQIPtrの違いはこのあたりが参考になるかと……
方法: CComPtr および CComQIPtr インスタンスを作成して使用する
visual c++ - What is the use of CComPtr over CComQIPtr in COM? - Stack Overflow

実行結果

f:id:fa11enprince:20140310095536p:plain
それにしても初見殺しなコード……WICちゃんと理解しないと…いろいろオプションとか機能ありすぎてわけわかりません(;´・ω・)

参考にさせていただいたサイト 感謝!

http://www.tkzdev.net/

使わせていただいた画像

※リンク先が切れていましたので、トップページのURLを載せています。