Изменить цвет стекла Aero для моего окна?

Я использую DwmExtendFrameIntoClientArea в своем приложении WPF, чтобы получить эффект стекла. Это нормально работает. Я бы хотел изменить цвет стекла - я пишу таймер обратного отсчета, и я бы хотел, чтобы окно большую часть времени было обычного цвета стекла, а затем стало красным (но еще со стеклом) когда время истечет.

Я нашел этот вопрос, в котором рассказывается о том, как применить градиентное стекло, и который отлично работает при выборе другого цвета. К сожалению, границы не окрашены соответствующим образом.

Когда я выключаю границы с помощью ResizeMode="NoResize", получаются квадратные углы. Я бы хотел сохранить закругленные углы.

Я посмотрел на создание окна неправильной формы с помощью AllowTransparency="True", и это работает нормально, но не похоже на окно из стекла Aero. Выглядит немного плоско.

Итак: мой вопрос: как мне создать окно в WPF, которое выглядит как прозрачное стекло Aero, но использует другой цвет?


person Roger Lipscombe    schedule 23.09.2009    source источник
comment
Я пытаюсь реализовать свой собственный эффект стекла Aero. Я очень близок к решению. Пожалуйста, посмотрите: stackoverflow.com/questions/10004802/ Может, мы найдем решение ...   -  person Tono Nam    schedule 04.04.2012


Ответы (2)


Я думаю, что единственный возможный способ добиться этого - использовать полупрозрачную рамку с заливкой и нарисовать ее по всему окну или той части, которая у вас есть. Это обходной путь, но я думаю, что это возможное решение, поскольку цвет стекла определяется пользователем системы, и этот параметр перезапишет ваш.

person Dänu    schedule 09.05.2010

Я сам задаю тот же вопрос.

Я не нашел хорошего решения, хотя лучшее, с чем я столкнулся, это следующее:

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

К сожалению, это подкрашивает кнопки сворачивания, изменения размера и закрытия, чего я бы предпочел избежать.

person Chris    schedule 11.05.2011