开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 3350|回复: 2

[教程] C# WinForm实现Win7 Aero磨砂效果

[复制链接]

0

精华

0

贡献

2

赞扬

帖子
31
软币
247
在线时间
20 小时
注册时间
2016-4-28
发表于 2017-3-22 21:47:48 | 显示全部楼层 |阅读模式

未标题-1.jpg

[C#] 纯文本查看 复制代码
[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 会把黑色视为透明区域)
    }
}

评分

参与人数 2赞扬 +2 收起 理由
黑色寂静夜晚 + 1
sjrgame + 1 很给力

查看全部评分

回复

使用道具 举报

0

精华

100

贡献

19

赞扬

帖子
29
软币
176
在线时间
9 小时
注册时间
2015-7-15
发表于 2017-4-10 11:08:26 | 显示全部楼层
dwmapi.dll,什么地方有?
回复

使用道具 举报

0

精华

0

贡献

2

赞扬

帖子
31
软币
247
在线时间
20 小时
注册时间
2016-4-28
 楼主| 发表于 2017-4-16 22:10:50 | 显示全部楼层
elwinpan 发表于 2017-4-10 11:08
dwmapi.dll,什么地方有?

windows 系统自带的
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-3-29 02:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表