有很多教程向您展示如何在像this one这样的wpf应用程序中使用vista glass效果。
我不想使用用户选择的默认颜色主题。换句话说,如果我将vista glass efect应用于我的wpf应用程序,它将等同于用户选择的内容:
1)获取整个桌面的图片。我稍后会弄清楚如何使用代码
执行此操作2)将图像放在画布上。当我抓住桌面时,我碰巧打开了Outlook。同时在顶部放置一个矩形,其中包含您想要使用的颜色和一些透明度
3)创建属性X和Y,实现INotifyPropertyChanged接口,以便我们可以在代码后面更新图像的位置:
public partial class MainWindow : Window, INotifyPropertyChanged
{
double _X;
public double X
{
get
{
return _X;
}
set
{
_X = value;
NotifyPropertyChanged("X");
}
}
double _Y;
public double Y
{
get
{
return _Y;
}
set
{
_Y = value;
NotifyPropertyChanged("Y");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
不要忘记设置:this.DataContext = this;
以便在窗口加载时成功绑定属性
4)现在我们需要将图像放置在相对于桌面的位置而不是窗口。所以我们在窗口移动时创建一个事件处理程序,我们修复图像的位置,如:
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = this;
this.LocationChanged += new EventHandler(MainWindow_LocationChanged);
}
void MainWindow_LocationChanged(object sender, EventArgs e)
{
X = -((System.Windows.Window)(sender)).RestoreBounds.TopLeft.X;
Y = -((System.Windows.Window)(sender)).RestoreBounds.TopLeft.Y;
}
如果我在哪里可以获得整个桌面的图像,那么此解决方案将非常有用。每次桌面更改时,我都必须更新图像源。此外,在更新图像源时,我将不得不在没有窗口的情况下捕获桌面图像。我不知道如何在没有主窗口的情况下获取桌面图像。也许我必须隐藏我的窗口才能获得屏幕截图然后再次显示我的窗口
答案 0 :(得分:1)
如果你想在WPF中使用半透明窗口,只需将窗口Opacity设置为< 1,将AllowTransparency设置为true,不幸的是,您还必须将WindowStyle设置为None。这意味着如果需要,您必须重新创建窗口镶边。