• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

AlphaBlend関数を使用するとできます。 例えば以下のサイトを参考にしてください http://www3.pf-x.net/~chopper/home2/WinAPI/WinGDI19.html

その他の回答 (2)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

過去に似たような事をしたことがありますが その時は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については触れません。

  • Steeple
  • ベストアンサー率50% (2/4)
回答No.2

System.Drawing.Imaging.ColorMatrixクラスを利用して半透明できます 詳しく下記のURLを参照してください。 http://yellow.ribbon.to/~tuotehhou/index.php?CSharp0002

関連するQ&A