欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# WinForm实现Win7 Aero透明效果代码

程序员文章站 2024-02-21 20:44:04
在vista系统之后,微软为窗体程序提供了aero磨砂的效果,如下图。那么用c#如何来实现这种磨砂效果呢? 背景为我的桌面 那先上代码吧: [struct...

在vista系统之后,微软为窗体程序提供了aero磨砂的效果,如下图。那么用c#如何来实现这种磨砂效果呢?

C# WinForm实现Win7 Aero透明效果代码

背景为我的桌面
那先上代码吧:

[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之后的系统中使用。