コントロールの透過

コントロールを透過させるには Opacity プロパティを変更します。0 が透過で、1 が不透過、その中間の 0 < n < 1 となる小数点値を設定すると半透明となります。

例えば TRectangle を半透明にするには Opacity プロパティに 0.5 を指定すればいい事になります。ですが、半透明にするのであればもうひとつ方法があります。それは Fill.Color に半透明色を指定する事です。

例えば #FFE0E0E0 というグレー色を半透明にするにはアルファ色を半分の値で指定します。0 が透過で、255 が不透過、その中間の 0 < n < 255 となる値を設定すると半透明となります。「そんなのどっちで指定してもいいじゃないか!」と思われる方もいらっしゃるかと思いますが、両者には決定的な違いがあります。

Button1 が Rectangle1 の下、Button2 は Rectangle1 の上かつ子コントロールという状況を想定してみます。

Rectangle1 の Opacity プロパティをいじったものと Fill.Color でアルファカラーをいじったものを比べてみたのが以下の画像です。

Opacity プロパティをいじると、子コントロールも透過します (左)。Rectangle の描画色を半透明にした場合には子コントロールは透過しません (中)。右のものは曇りガラスのような効果が得られていますね、これはどうやっているのでしょう?

実は、Button1 の親に Rectangle1 と全く同じ大きさの TLayout を指定し、それに対して TBlurEffect をぶら下げています (TGaussianBlurEffect でもいいかと思います…お好みで)。こうする事により、Rectangle1 の背面にあるすべてのコントロールに対して個別に TBlurEffect をぶらさげなくてもよくなり、TLayout に貼られた子コントロールはすべて曇りガラス越しに見たような効果を得る事ができます。

See Also:


 BACK