2011年04月24日

半透明のフォームの作り方(2つのフォームを重ねる)・続き

前回の続きです。

上に重ねるフォームを透明にします。
フォームを透明にするには、TransparencyKeyとBackColorに同じ色を設定すると良いのですが、コントロールの背景もBackColorになるので、コントロールも透けてしまいます。(ボタンも透けてしまう)
そこで、少し強引ですが、BackgroundImageにTransparencyKeyの色で塗りつぶしたBITMAPを指定することで、背景だけの透明化を実現します。

private void Form1_Load(object sender, EventArgs e)
{
    Form2 f2 = new Form2();

    // 背景を塗る(this.BackColorだとコントロールの背景も変わってしまうのでダメ)
    {
        // フォームと同じ大きさのBITMAPを作成
        Bitmap image = new Bitmap(f2.Width, f2.Height);

        // 透過色で塗りつぶす
        Graphics g = Graphics.FromImage(image);
        g.Clear(Color.Green); // 何色でも良いが他のコントロールの色と違うものにする

        // 背景に設定
        f2.BackgroundImage = image;
    }

    // 透過色の設定
    f2.TransparencyKey = Color.Green;

    // 表示
    f2.Show();
}

実行するとこんな感じです。背景だけが透明になり、コントロールは不透明になっています。
dual-form-2.png

続きます

良かったらクリックしてください
にほんブログ村 IT技術ブログ プログラム・プログラマーへ  人気ブログランキングへ

posted by among at 21:10 | Comment(0) | TrackBack(0) | C#
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/44289906

この記事へのトラックバック