[VC2005] フォームを半透明にする方法

◆概要
この資料は、Microsoft(R) Visual C# 2005で フォームを半透明にする方法について記述しています。


◆Opacityプロパティ

Visual C# Express 2005で フォームを半透明にするには、フォームのOpacityプロパティを設定します。Opacity プロパティは、Double 型の値を持ちます。

設定する値は、0.0 (完全に透明) 〜 1.0 (完全に不透明)

リスト1
private void Form1_Load(object sender, EventArgs e)
        {
            this.Opacity = 0.6;
        }

 リスト2は、Opacityプロパティを利用して、フォームをフェードアウト、フェードインするサンプルです。


リスト2 フェードアウト、フェードイン

using System;
using System.Windows.Forms;

namespace OpacityForms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // 透明度を100%にするための変数
        private const int Transparence = 100;

        private void btnStart_Click(object sender, EventArgs e)
        {
            double TempOpacity;
            TempOpacity = 1.0;
            // フォームを透明化(フェードアウト)
            for (int i = 1; i < Transparence; i++)
            {
                TempOpacity -= 0.01;
                if (TempOpacity < 0)
                    TempOpacity = 1;

                this.Opacity = TempOpacity;
                this.Refresh();
                
            }
            //一時停止
            System.Threading.Thread.Sleep(100);

            // 透明な状態からフォームを表示(フェードイン)
            for (int i = 1; i < Transparence; i++)
            {
                TempOpacity += 0.01;
                if (TempOpacity < 0)
                    TempOpacity = 1;

                this.Opacity = TempOpacity;
                this.Refresh();                
            }
            this.Opacity = 1.0;
            this.Refresh();
        }
    }
}

◆他のフォームをフェードイン、フェードアウトする

 リスト2では、自分自身のフォームをフェードイン、フェードアウトする例でしたが、リスト3は、Form1のボタンクリックにより、Form2をフェードイン、フェードアウトするサンプルです。

リスト3 他のフォームをフェードアウト、フェードイン

        private void button1_Click(object sender, EventArgs e)
        {
            // Form2をフェードイン、フェードアウトする

            Form2 frm2 = new Form2();

            frm2.Opacity = 0;
            frm2.Show();

            // Form2を透明な状態からフォームを表示(フェードイン)
            for(double i=0;i<=1;i +=0.001)
                frm2.Opacity=i;

            //一時停止
            System.Threading.Thread.Sleep(100);

            // フォームを透明化(フェードアウト)して閉じる
            for (double i = 1; i >= 0; i -= 0.001)
                frm2.Opacity = i;
            frm2.Close();
        }
参考

MSDN 透過的な Windows フォームの作成

@IT フェードイン/アウトするウィンドウを作るには



▼ページトップへ