Today プラグインサンプルプログラム3

Today プラグインサンプルプログラム2では、背景を透過して、文字を書いてみました。
文字が表示できたら、今度は画像を表示してみたくなるのが人情というもの。

というわけで、ただ表示するだけでは面白くないので、α(アルファ/透明度)の情報を持ったPNG画像を、背景上にBlendして表示してみましょう。

具体的には、以下のような画像を用意し、数字を背景上に描画します。

デジタル数字

絵じゃなくて字じゃん!というツッコミはなしでw
わかりにくいかもしれませんが、背景が透過しており、なおかつ数字の縁にはアンチエイリアスがかかっています。
白一色だと見にくいと思うので、同じサイズの黒の画像を裏に重ねて、少し右下にずらして影の効果を出しています。

ファイルパス作成

まずは、読み込む画像ファイルのフルパスを作る必要があります。
WindowsMobileは、相対パスが使えないという制限もありますし、そうでなかったとしても、フルパス指定の方が、何かと安全です。

今回は、DLLと同じところに画像ファイルを置きます。
なのでまず、DLLがアタッチされた時に、自分自身のパスを保存しておきます。
現状、DLLアタッチ時に、リソースのロードをしているので、そこでDLLのパス保存もしておきましょう。

自分自身のパスを得るには、DllMainの第1引数を指定して、GetModuleFileNameをコールします。
通常、実行ファイルが自分自身のパスを得るには、第1引数にNULLを指定してGetModuleFileNameをコールしますが、DLLでそれをやると、DLLを呼び出した実行ファイルの名前が取れてきてしまいます。
今回は、DLL自身のパスを知りたいので、ちゃんとDLLのインスタンスハンドルを渡しましょう。

実際に画像ファイルのパスを作りたい時には、このDLLのパスをベースに、ファイル名を入れ替えればいい事になります。
本当は、makepathやsplitpathといった関数が使用できれば楽でよかったのですが、見あたらなかったので、自力で入れ替えています。
処理としては、後ろから文字を調べて、最初に「\」が出てきたところより後ろを、読みたいファイル名に置き換えています。

DIBSection


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS