1. 程式人生 > >C# WINFORM 製作真正的 透明窗體 桌面畫圖 的完美解決方案

C# WINFORM 製作真正的 透明窗體 桌面畫圖 的完美解決方案


            WindowState = FormWindowState.Maximized;//本窗體最大化
            TransparencyKey = BackColor;//背景透明(滑鼠穿透)
            DoubleBuffered = true;//雙快取處理

            df = new drawForm();//不穿透滑鼠透明窗體
            //設定不穿透滑鼠透明窗體畫板滑鼠事件為本顯示畫圖窗體滑鼠事件進行同步
            df.MouseDown += showForm_MouseDown;//滑鼠按下事件
            df.MouseMove += showForm_MouseMove;//滑鼠移動事件
            df.MouseUp += showForm_MouseUp;//滑鼠彈起事件

            //不穿透滑鼠透明窗體引數設定如下
            df.WindowState = FormWindowState.Maximized;//最大化
            df.Opacity = 0.1;//背景透明不穿透滑鼠
            df.TopMost = true;//讓不穿透滑鼠透明窗體畫板為最上層
            df.DoubleBuffered = true;//雙快取處理
            df.Show();//顯示
            gs = CreateGraphics();//建立窗體畫板
            pen = new Pen(Color.Black, 3f);//畫筆
        }

        private void showForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                startdraw = true;//開始畫圖
                startpt = e.Location;
            }
        }

        private void showForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (startdraw)
            {
                gs.DrawLine(pen, startpt, e.Location);
                startpt = e.Location;
            }
        }

        private void showForm_MouseUp(object sender, MouseEventArgs e)
        {
            startdraw = false;//結束畫圖
        }
    }
}