一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

WPF 擴展玻璃效果(Aero Glass)

  Windows 7 操作系統默認具有一款玻璃效果主題(Aero Glass)。如果選擇了該款主題,所有的應用程序標題欄都會處于玻璃透明效果(如下圖)。這個功能是由Desktop Window Manager(DWM)服務支持的。

GlassExample

  默認情況下,我們編寫的應用程序在Windows 7 中也只有標題欄和窗口框架會具備玻璃效果,其他區域仍是不透明狀態(如下圖)。如果想將程序整體都改為上圖IE 窗口的效果,可以使用DWM API 將玻璃區域進行擴展。

Notepad

  首先,從dwmapi.dll 中調取DwmExtendFrameIntoClientArea 方法。

[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
public int cxLeftWidth;
public int cxRightWidth;
public int cyTopHeight;
public int cyBottomHeight;
};

[DllImport("DwmApi.dll")]
public static extern int DwmExtendFrameIntoClientArea(
IntPtr hwnd,
ref MARGINS pMarInset);

  創建方法ExtendAeroGlass 方法,可將WPF Window窗口的Aero Glass 區域擴展。

private void ExtendAeroGlass(Window window)
{
try
{
// 為WPF程序獲取窗口句柄
IntPtr mainWindowPtr = new WindowInteropHelper(window).Handle;
HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent;

// 設置Margins
MARGINS margins = new MARGINS();

// 擴展Aero Glass
margins.cxLeftWidth = -1;
margins.cxRightWidth = -1;
margins.cyTopHeight = -1;
margins.cyBottomHeight = -1;

int hr = DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
if (hr < 0)
{
MessageBox.Show("DwmExtendFrameIntoClientArea Failed");
}
}
catch (DllNotFoundException)
{
Application.Current.MainWindow.Background = Brushes.White;
}
}

  簡單制作一個WPF 界面。

<Window x:Class="WpfAeroGlass.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<
Grid x:Name="layout">
<
Button x:Name="btn" Content="Button" Margin="191,66,202,211" />
<
CheckBox x:Name="checkBox" Content="Extend AeroGlass"
Click="CheckBox_Checked" Height="24" Width="121" />
</
Grid>
</
Window>

  補充CheckBox 點擊事件,在其中啟用ExtendAeroGlass 方法。

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
if (checkBox.IsChecked.Value)
{
this.Background = Brushes.Transparent;
ExtendAeroGlass(this);
}
else
{
this.Background = Brushes.White;
}
}

  演示效果

  運行程序后,默認界面狀態。

Default

  點擊"Extend AeroGlass" 選框,界面中<Grid> 也將呈現玻璃效果。

AllGlass

  Windows API

  通過Windows API Code Pack 可以對Aero Glass 效果進行開啟或關閉。在程序中加入Microsoft.WindowsAPICodePack.Shell 命名空間,調整AeroGlassCompositioinEnabled 完成開/關Aero Glass的效果。

GlassWindow.AeroGlassCompositionEnabled = checkBox.IsChecked.Value;

  源代碼:WpfAeroGlass.zip

NET技術WPF 擴展玻璃效果(Aero Glass),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 草色网| 国产成人禁片在线观看 | 三级三级三级全黄 | 亚洲精品成人在线 | 视频在线国产 | 精品福利视频一区二区三区 | 最新国产区 | 最新亚洲一区二区三区四区 | 美女网站免费看 | jizz亚洲视频 | 国产中文字幕视频在线观看 | 男女国产视频 | 亚洲人xx视频 | 天天澡天天碰天天狠伊人五月 | 国产成人精选免费视频 | 国产成人乱码一区二区三区在线 | 美女视频黄的免费 | 97在线观看成人免费视频 | 欧美色域 | 久久久国产一区二区三区 | 久久久久网站 | 99精品网站| 亚洲一区二区三区网站 | 日韩欧美91| 黄色片网站在线免费观看 | 久久厕所精品国产精品亚洲 | 国产一级又裸又黄又裸又 | 四虎永久地址4hu紧急入口 | 成人小视频网 | 999re6热在线精品视频思思 | 成人午夜视频在线观 | 四虎影视色费永久在线观看 | 欧美另类极品videosbest视 | 巨大巨粗巨长 黑人长吊视频 | 日韩亚洲欧美综合一区二区三区 | 91久久精品在这里色伊人6882 | 国产精品视频免费看 | 久久久久avav久久久 | 欧美三级精品 | 欧美成人免费全部观看天天性色 | 色播视频网站 |