C# WinForm实现Win7 Aero透明效果代码
程序员文章站
2023-12-18 21:16:58
在vista系统之后,微软为窗体程序提供了aero磨砂的效果,如下图。那么用c#如何来实现这种磨砂效果呢?
背景为我的桌面
那先上代码吧:
[struct...
在vista系统之后,微软为窗体程序提供了aero磨砂的效果,如下图。那么用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(); public form1() { initializecomponent(); } protected override void onload(eventargs e) { if (dwmiscompositionenabled()) { margins margins = new margins(); margins.right = margins.left = margins.top = margins.bottom = this.width + this.height; dwmextendframeintoclientarea(this.handle, ref margins); } base.onload(e); } protected override void onpaintbackground(painteventargs e) { base.onpaintbackground(e); if (dwmiscompositionenabled()) { e.graphics.clear(color.black); } }
这中效果的实现主要是调用了系统的dwmapi.dll。
dwmapi.dll是microsoft desktop window manager api(桌面窗口管理器dwm 的公用界面)的动态链接库,正常文件,主要用作桌面效果的api。dwm 是一种新界面,在除 windows vista home basic 之外的所有 windows vista 版本中均提供 dwm 界面。
所以这种效果只能在vista之后的系统中使用。