投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/1/23 07:18:47
MyTrashCan の動作を見る限り、レイヤード ウィンドウ(※1)が使われているようですが、
これは API を使わねばならないので、難易度が高いですよ。

.NET でレイヤード ウィンドウといえば、Form.TransparecyKey / Form.Opacity プロパティが
該当しますが、これらのプロパティは SetLayeredWindowAttributes API (※2)に相当する物であり、
今回のように部分的に透過率を変えたいような場合には利用できません。

同じ画面上に透過度の違うエリアを作りたい場合は、UpdateLayeredWindow API (※3)を
使わねばなりませんが、これに相当する機能は .NET Framework には用意されていないようなので、
Declare ステートメント(もしくは、DllImport 属性)を用いて、この API を
直接呼び出すコードを書く必要があります (※4, ※5)。


-----------------------------------------------------------------
(※1)レイヤード ウィンドウという言葉を聞いた事が無ければ、下記を参照してください。
http://msdn.microsoft.com/ja-jp/library/ms997507.aspx

(※2) SetLayeredWindowAttributes API の仕様について。
http://msdn.microsoft.com/ja-jp/library/cc411043.aspx

(※3) UpdateLayeredWindow API の仕様について。
http://msdn.microsoft.com/ja-jp/library/cc364847.aspx

(※4) C# での実装サンプル。main.exe を起動し、そこに png 画像をドロップしてみましょう。
http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx

(※5) VB での実装ヒント。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41225&forum=7