フォームに画像を貼り付けています.その画像の一部分,例えばマウスカーソルの周辺だけを半透明化したいと思っています.
フォームのプロパティのAlphaBlendValueを設定すると,全体が半透明化されてしまいます.
どのようにすれば良いか,どなたかご教授お願いします.
"不定形なフォーム(Windows2000専用)"
http://forum.nifty.com/fdelphi/samples/01218.html
が正にそれです。
透明度の情報を持った32bit Bitmapがそのまま反映されます。
ちょっと難しいかもしれませんががんばってください。
PS.
googleでUpdateLayeredWindowで検索かけたら引っかかりました。
私はこれを実現するのにとても苦労したんですけど…
32bit Bitmapって、どうやれば作成できますか?
http://forum.nifty.com/fdelphi/samples/01218.html
のソース見たら
Surface.PixelFormat:=pf32bit;
って書いてあるやんけ!
sample.bmp の作成についてですけど・・・
>通りすがり 2005/04/28(木) 15:33:04
>32bit Bitmapって、どうやれば作成できますか?
TBitmapのPixelFormatをpf32bitにすればOKです。
16bit BitmapはR,G,B
32bit BitmapはR,G,B,Alphaの配列でデータが格納されるだけです。
ScanLineでBitmapデータにアクセスしてください。
ただ、Alpha値に伴いRGBを変更させなくてはならないのはリンクの通りです。
詳しく知りたければ中村氏著の「Delphi Fraphic Secrets」をお読みください。
補足ですが、上の本では32bit Bitmapについて余り詳しく述べられてはいませんがBitmapについて理解できれば16bitも32bitも大して変わりないことは理解できると思います。
> Bitmapについて理解できれば16bitも32bitも大して変わりないことは理解できると思います。
16bit はちょっと特殊ですけどね。一番自然なのは pf24bit だと思いますけど。
ハゥ! 24bitでした。
>「Delphi Fraphic Secrets」
「Delphi Graphic Secrets」です、
がんばれ俺!
32bit Bitmapには2種類あります。
①WindowsXPで利用されている R,G,B,Alphaをそれぞれ1バイト使用したもの
アルファチャンネルを利用して透明度を指定する。
②16bit-Bitmapと同じ様にビットフィールド形式のもの
16bit-Bitmapでも通常の5-5-5以外に5-6-5等のフォーマットがあります。
32bit-Bitmapの場合は10-10-10等のフォーマットがあります。
これらのビットフィールド定義はBITMAPINFOHEADERの直後にあります。
この場合ヘッダ内のbiCompressionがBI_BITFIELDSとなっています。
上の例で使用されている32bit-Bitmapは①のアルファチャンネル方式のものです。
通りすがりさんの
>32bit Bitmapって、どうやれば作成できますか?
はDelphiで 32bit-Bitmapを作成する方法ではなくて、32bit-Bitmap(アルファチャンネル付)を作成するグラフィックツールを教えて欲しいということなのでしょうか?
ちょっと遅くなりましたが、kkkさん、その通りです。
Windowsに付いているペイントでは作成できませんよね・・・
アルファチャンネル付32bit-Bitmapを出力できるソフトは割りと少ないですね。
WindowsXPのアイコンが作成できるツールは当然対応しているみたいですがサイズの大きいものは無理みたいですね。
一応Hyper-Paintでは32bit-bmpで出力できるみたいですが。
http://con-kiriman.web.infoseek.co.jp/c4/download.htm
ツイート | ![]() |