各種ブレンド(半透明)
(16bitカラー以上必須、32bitカラー推奨)
ゲームなどでよく使用されるブレンド(半透明)を実現します。
半透明の種類と実現方法 |
Win98以降には専用APIが用意されているようですが、ここでは自前でエンジンを作成します。
画像1の点(x,y)の色をRGBごとに分けたものを(r1,g1,b1)、画像2の点(x,y)の色をRGBごとに分けたものを(r2,g2,b2)としたとき合成後の点(x,y)の色(R,G,B)は以下のようになります。
名称 |
内容 |
計算方法 |
平均ブレンド |
画像1と画像2を1:1の割合で合成します |
R=(r1+r2)\2 |
アルファブレンド |
画像1と画像2をα:1-αの割合で合成します |
R=r1*α+r2*(1-α) |
加算ブレンド |
画像1と画像2の色を足し合わせます |
R=r1+r2 |
Brightenブレンド |
画像1と画像2の各点のRGBごとの明るいほうをとり合成します |
- |
Darkenブレンド |
画像1と画像2の各点のRGBごとの暗いほうをとり合成します |
- |
サ ン プ ル プ ロ グ ラ ム |
GetDIBites,SetDIBits等のAPIを使用しているのでわりに高速に変換できます。
(256Pixel*100Pixel*256色のビットマップではK6-200MHzで12fps程度(80msec)、そのうち計算時間は20msec程度でした。
(ネイティブコンパイル時)