Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing the colour of Aero glass for my window?

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?

like image 415
Roger Lipscombe Avatar asked Sep 23 '09 08:09

Roger Lipscombe


2 Answers

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.

like image 161
Dänu Avatar answered Nov 18 '22 23:11

Dänu


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.

like image 26
Chris Avatar answered Nov 18 '22 23:11

Chris