![Normal](https://livedoor.blogimg.jp/shinta0806be/imgs/9/1/91204e9e-s.png)
元々は右のような普通の(不透明な)ウィンドウの透過度を、いくつかの方法で変化させてみる。
動作は Windows 7 (64bit) / C++Builder XE で行っているが、別の環境では別の動作になるかも。
* クライアント領域のみ透明化
クライアント領域のみを透明化させるには、フォームの TransparentColor/TransparentColorValue プロパティを使う。void TFormTest01::Test01() { TransparentColor = true; TransparentColorValue = TColor(0x000001); Canvas->Brush->Color = TColor(0x000001); Canvas->FillRect(TRect(0, 0, 300, 300)); Panel2->Color = TColor(0x000001); }
![TransparentColor](https://livedoor.blogimg.jp/shinta0806be/imgs/a/f/afd1091e-s.png)
Windows API で言えば、SetLayeredWindowAttributes() を LWA_COLORKEY でコールした状態だと思われる。ただし、Windows API の場合、透過部分ではマウスイベント等を受け取れない(透明と言うよりはウィンドウに穴が空いて、背後のデスクトップ等にイベントが行く)ようだが、C++Builder の場合はイベントを受け取れる。
* ウィンドウ全体を半透明化
ウィンドウ全体を半透明にするには、フォームの AlphaBlend/AlphaBlendValue プロパティを使う。void TFormTest01::Test02() { AlphaBlend = true; AlphaBlendValue = 128; }
![AlphaBlend](https://livedoor.blogimg.jp/shinta0806be/imgs/e/2/e2d276d0-s.png)
コンポーネントも含め、ウィンドウ内がすべて一律で透明になる。
Windows API で言えば、SetLayeredWindowAttributes() を LWA_ALPHA でコールした状態だと思われる。
* グラスフレーム(ガラス効果)の拡張
Windows Vista から導入された Aero において、グラスフレーム(タイトルバーのもやもやした半透明)をクライアント領域にまで広げるには、GlassFrame プロパティを使う。void TFormTest01::Test07() { GlassFrame->Enabled = true; GlassFrame->SheetOfGlass = true; }
![GlassFrame](https://livedoor.blogimg.jp/shinta0806be/imgs/c/1/c124fd61-s.png)
Windows API で言えば、Desktop Window Manager の DwmExtendFrameIntoClientArea() をコールした状態と思われる。