更改窗户的 Aero 玻璃颜色?

发布于 2024-08-06 03:24:04 字数 657 浏览 2 评论 0原文

我在 WPF 应用程序中使用 DwmExtendFrameIntoClientArea获得玻璃效果。这工作正常。我想做的是改变玻璃使用的颜色——我正在编写一个倒计时器,我希望窗口在大多数时间都是正常的玻璃颜色,然后变成红色(但是仍然有玻璃)当时间用完时。

我发现这个问题,讨论如何应用渐变玻璃,并且在选择不同颜色时效果很好。不幸的是,边框的颜色不合适。

当我使用 ResizeMode="NoResize" 关闭边框时,最终会得到方角。我想保留圆角。

我考虑使用 AllowTransparency="True" 创建一个不规则形状的窗口,效果很好,但看起来不像 Aero 玻璃窗。看起来有点扁平。

所以:我的问题:如何在 WPF 中创建一个看起来像 Aero 玻璃透明度但使用不同颜色的窗口?

I'm using DwmExtendFrameIntoClientArea in my WPF application to get the glass effect. This is working fine. What I'd like to do is change the colour used for the glass -- I'm writing a countdown timer, and I'd like the window to be the normal glass colour most of the time, and then to go red (but still with glass) when the time runs out.

I found this question, which talks about how to apply a gradient glass, and that works fine when picking a different colour. Unfortunately, the borders are not coloured appropriately.

When I turn off the borders by using ResizeMode="NoResize", then I end up with square corners. I'd like to keep the rounded corners.

I looked at creating an irregularly-shaped window, by using AllowTransparency="True" and that works fine, but doesn't look like an Aero glass window. It looks a bit flat.

So: my question: how do I create a window in WPF that looks like Aero glass transparency, but uses a different colour?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沒落の蓅哖 2024-08-13 03:24:04

我认为实现这一点的唯一可能的方法是使用半透明填充边框并将其绘制在整个窗户或玻璃的部分上。这是一种解决方法,但我想这是一个可能的解决方案,因为玻璃的颜色是由系统用户定义的,并且此设置会覆盖您的设置。

I think the only possible way to achieve this is to use a semi-transparent filled border and draw it over the entire window or the part you got the glass. Its a workaround but I guess it's a possible solution since the color of the glass gets defined by the system-user and this setting would overwrite yours.

就像说晚安 2024-08-13 03:24:04

我自己也在问同样的问题。

我还没有找到一个好的解决方案,尽管到目前为止我遇到的最好的解决方案是执行以下操作:

HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.FromArgb(100,255,0,0);

不幸的是,这会给最小化、调整大小和关闭按钮着色,我宁愿避免这样做。

I'm asking the same question myself.

I haven't found a good solution, though the best I've come across so far is doing the following:

HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.FromArgb(100,255,0,0);

Unfortunately this tints the minimize, resize and close buttons, which I would rather avoid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文