C# Winform 窗體美化(七、Win7 Aero 毛玻璃效果)
阿新 • • 發佈:2018-12-31
七、Win7 Aero 毛玻璃效果
在 Win7 上有一種 Aero 效果,毛玻璃透明效果,搭配不同風格的顏色,效果很好。在學習 Winform 美化的時候順便看到的這種效果,也整理進來了。
注意:Win7 上想看到這種效果需要開啟並使用 Aero 效果的主題。
效果
程式碼
public partial class Form1 : Form
{
[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
public int Left;
public int Right;
public int Top;
public int Bottom;
}
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern bool DwmIsCompositionEnabled(); //Dll 匯入 DwmApi
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//如果啟用Aero
if (DwmIsCompositionEnabled())
{
MARGINS m = new MARGINS();
m.Right = -1; //設為負數,則全窗體透明
DwmExtendFrameIntoClientArea(this .Handle, ref m); //開啟全窗體透明效果
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
if (DwmIsCompositionEnabled())
{
e.Graphics.Clear(Color.Black); //將窗體用黑色填充(Dwm 會把黑色視為透明區域)
}
}
}