C# WinForm实现Win7 Aero磨砂效果
2016-03-22 16:44
495 查看
[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
protected override void OnLoad(EventArgs e)
{
//如果启用Aero
if (DwmIsCompositionEnabled())
{
MARGINS m = new MARGINS();
m.Right = -1; //设为负数,则全窗体透明
DwmExtendFrameIntoClientArea(this.Handle, ref m); //开启全窗体透明效果
}
base.OnLoad(e);
}
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
if (DwmIsCompositionEnabled())
{
e.Graphics.Clear(Color.Black); //将窗体用黑色填充(Dwm 会把黑色视为透明区域)
}
}
相关文章推荐
- C#中Math.Round四舍五入的用法详解,
- 登山-C#-enum类型基础
- C#枚举中的位运算权限分配浅谈
- C#类、接口、虚方法和抽象方法0322
- C#设置子窗体在主窗体中居中显示解决方案
- 发送传真的c#方法_.NET教程
- C#调用java代码
- C#POST下载文件服务器返回500错误
- C#函数式编程之缓存技术
- 【笔记】《C#大学教程》- 第14章 多线程
- C# 封装一个钩子类
- C# 时间与时间戳互转 13位
- C# 时间与时间戳互转 13位
- C# 流总结
- C# 堆栈(Stack)
- c#大圣之路笔记——c# 页面加载数据过长等待显示框
- 用C# 拓展方法给现有的类增加 可用函数
- C# 使用Log4Net记录程序日志
- C# PLINQ 内存列表查询优化历程
- C#关于AutoResetEvent的使用介绍[转载]