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

WPF 擴(kuò)展玻璃效果(Aero Glass)

  Windows 7 操作系統(tǒng)默認(rèn)具有一款玻璃效果主題(Aero Glass)。如果選擇了該款主題,所有的應(yīng)用程序標(biāo)題欄都會(huì)處于玻璃透明效果(如下圖)。這個(gè)功能是由Desktop Window Manager(DWM)服務(wù)支持的。

GlassExample

  默認(rèn)情況下,我們編寫的應(yīng)用程序在Windows 7 中也只有標(biāo)題欄和窗口框架會(huì)具備玻璃效果,其他區(qū)域仍是不透明狀態(tài)(如下圖)。如果想將程序整體都改為上圖IE 窗口的效果,可以使用DWM API 將玻璃區(qū)域進(jìn)行擴(kuò)展。

Notepad

  首先,從dwmapi.dll 中調(diào)取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);

  創(chuàng)建方法ExtendAeroGlass 方法,可將WPF Window窗口的Aero Glass 區(qū)域擴(kuò)展。

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

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

// 擴(kuò)展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;
}
}

  簡(jiǎn)單制作一個(gè)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>

  補(bǔ)充CheckBox 點(diǎn)擊事件,在其中啟用ExtendAeroGlass 方法。

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

  演示效果

  運(yùn)行程序后,默認(rèn)界面狀態(tài)。

Default

  點(diǎn)擊"Extend AeroGlass" 選框,界面中<Grid> 也將呈現(xiàn)玻璃效果。

AllGlass

  Windows API

  通過Windows API Code Pack 可以對(duì)Aero Glass 效果進(jìn)行開啟或關(guān)閉。在程序中加入Microsoft.WindowsAPICodePack.Shell 命名空間,調(diào)整AeroGlassCompositioinEnabled 完成開/關(guān)Aero Glass的效果。

GlassWindow.AeroGlassCompositionEnabled = checkBox.IsChecked.Value;

  源代碼:WpfAeroGlass.zip

NET技術(shù)WPF 擴(kuò)展玻璃效果(Aero Glass),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久最新精品 | 精品国产免费人成网站 | 国产亚洲精品拍拍拍拍拍 | 欧美激情网站 | 免费一级 一片一毛片 | 国产精品第六页 | 国产精品黑色丝袜的老师 | 国内黄色一级精品 | 夜夜操天天干 | 精品综合久久久久久98 | 思思久热re6这里有精品 | 啦啦啦www图片 | 快射视频欧美 | 国产综合欧美 | 国产一区二区免费不卡在线播放 | 亚洲国产欧美另类 | 五月激情综合丁香色婷婷 | 福利在线视频观看 | 色婷婷久久综合中文久久一本 | 五月婷婷免费视频 | 中文字幕亚洲一区婷婷 | 国产一区二区三区在线影院 | 一区二区三区视频观看 | 国产成人精品综合网站 | 五月婷婷在线免费观看 | 99成人精品 | 精品久久久久久久 | 成人在线观看免费视频 | 欧美成人精品福利在线视频 | 99精品视频在线在线视频观看 | 久久久国产精品福利免费 | 在线播放人成午夜免费视频 | 国产成人精品影视 | 亚洲欧美国产精品 | 劲爆欧美第1页婷婷 | 欧美极品欧美精品欧美图片 | 亚洲图片欧美日韩 | 欧美人与禽片免播放 | 国产亚洲精品福利片 | 国产成人mv在线观看入口视频 | 欧美激情不卡 |