プロが教える店舗&オフィスのセキュリティ対策術

Windowsプログラミング:BitBltで半透明な透かしを作りたい

現在透過色を設定して、特定の部分をくりぬく処理はできているのですが、「くりぬいて残った部分をさらに半透明にして描画」という処理がWindowsAPIで実現できなくて困っております。
ご存知の方居られましたらご教授願えれば幸いです。

A 回答 (3件)

AlphaBlend関数を使用するとできます。


例えば以下のサイトを参考にしてください
http://www3.pf-x.net/~chopper/home2/WinAPI/WinGD …
    • good
    • 0

過去に似たような事をしたことがありますが


その時はSetDIBitsDevice APIを使いました。BitBltでは無理だと思います。
後ろの画像の画素と、描画しようとする画素を自前でアルファブレンドの計算を行い
そのデータ(配列)をこのAPIで指定します。
色々なPCの環境でも動作させる為には
デスクトップのカラーが24bitなのか32bitなのか16bitなのかを
:GetDeviceCaps( ::GetDC( ::GetDesktopWindow() ), BITSPIXCEL )で
判定し、それに応じてアルファブレンドの計算しました。
そこそこ高速に動くAPIなので、サイズが馬鹿でかくなければ
さくさく表示可能だったと記憶しています。
 ※かなり前の記憶なので後は自力で調べてください。

ただ上記は割と面倒です。
別の方法でGDI+を使えば、より簡単に出来るでしょう。
「猫でもわかる」にGDI+の使用方法のサンプルがあります。
http://homepage2.nifty.com/c_lang/sdk4/sdk_335.htm
この方法を使う場合は
「GDI+ アルファブレンディング」で検索してみてください。

※今回はWinAPIという質問でしたのでDirectXや.Netについては触れません。
    • good
    • 0

System.Drawing.Imaging.ColorMatrixクラスを利用して半透明できます


詳しく下記のURLを参照してください。
http://yellow.ribbon.to/~tuotehhou/index.php?CSh …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!