Как нарисовать панель задач Windows 7 как затененные кнопки

Кнопки панели задач Windows 7 нарисованы на затемненном фоне. Цветовой оттенок каким-то образом влияет на то, где курсор мыши находится над кнопкой.

Я бы хотел использовать такие кнопки в своем приложении. Как я могу это сделать ?


person RED SOFT ADAIR    schedule 30.11.2009    source источник
comment
Я думаю, что это простой радиальный градиент, который перемещается вместе с указателем мыши. Когда мышь приближается к верхней части кнопки, задействуется второй градиент. Это то, что вы хотите знать? Вы скорее ищете готовую к использованию кнопку в виде панели задач? :)   -  person OregonGhost    schedule 30.11.2009
comment
Я только что проверил, кстати, по крайней мере, с включенным Aero кнопки не выглядят как окна, весь список кнопок представляет собой одно окно. Это означает, что кнопки, скорее всего, нарисованы вручную. Однако UISpy показывает кнопки отдельно (Windows UI Automation).   -  person OregonGhost    schedule 30.11.2009
comment
Спасибо, OregonGhost. Ты прав. Вся панель задач Windows 7 представляет собой одно окно. То же самое и в XP, хотя класс окна там другой. То же самое и с новыми лентами: все ленты окна приложений представляют собой ОДНО окно типа NetUIHWND. Зачем нам вообще оконный менеджер?   -  person RED SOFT ADAIR    schedule 08.12.2009


Ответы (4)


Может попробовать

DrawThemeBackground

http://msdn.microsoft.com/en-us/library/bb773289(VS.85).aspx

Присвойте ему константу BS_PUSHBUTTON. Я использовал это в Windows XP, чтобы нарисовать плюшевые синие тематические элементы управления XP, но не в Aero, но попробовать стоит.

person karoberts    schedule 02.12.2009
comment
Спасибо, хотя это не решение, это отличный намек. У меня есть 2 или 3 места, где я пытался нарисовать кнопку как свои собственные объекты. Используя DrawThemeBackground, я могу сделать это в Windows оригинальным способом. - person RED SOFT ADAIR; 08.12.2009

Эффект получил название «Color Hot-track». Не похоже, что для этого есть специальный API. Есть некоторые примечания в блог разработчика об этом:

Я нашел исходный код от Руди Гроблера, хотя делал то же самое:

Сделайте свой Кнопки WPF цветные горячие!

person RED SOFT ADAIR    schedule 08.12.2009

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

person jalf    schedule 30.11.2009
comment
Если я правильно помню, они работают на виртуальной машине с драйверами, отличными от WDDM, поэтому должен быть также программный алгоритм. - person OregonGhost; 30.11.2009
comment
Они делают? Я думал, что они отключены при выключенном Aero Glass. В любом случае алгоритм тот же, если вы делаете это программно. Просто медленнее. - person jalf; 30.11.2009

Он использует новый api анимации (некоторые из них существуют в Vista, расширены в 7). Нет никакого волшебного стиля для установки, вам все равно нужно рисовать самостоятельно.

person Anders    schedule 04.12.2009