Уродливые "отключенные" образы TMainMenu - PullRequest
13 голосов
/ 25 июня 2010

Delphi 2010, Win32 VCL. Мне нужно создать главное меню для моего приложения с наиболее стандартным внешним видом. TMainMenu хорошо выглядит во всех версиях Windows, единственное, что плохо, это когда отображаются изображения для элементов с Enabled = False.

В Delphi есть какой-то странный метод построения отключенных изображений (ч / б экструзия со скосами, для меня это выглядит как выплескивание). Я хочу сделать патч для этой процедуры в источниках VCL и позволить меню выбрать отключенные изображения из того же TImageList, но я не могу его найти.

Существует ли он вообще или это какой-то стандартный вызов Windows API? Вы знаете, где находится эта процедура?

Конечно, стиль OwnerDraw может исправить все это, но я хочу немного более быстрое решение.

Ответы [ 2 ]

22 голосов
/ 25 июня 2010

На блоге в логове Гальфара есть отличный пост, в котором описана проблема и приведен код для ее обхода, переопределяющий метод DoDraw TImageList.

Вот изображение (связано), показывающее 'до и после.

alt text

Я думаю, что это относится практически ко всем версиям Delphi.

4 голосов
/ 25 июня 2010

Если вы можете предоставить свои изображения в формате PNG, вы можете использовать TPngImageList из PngComponents . У этого есть различные варианты сделать смешанное или отключенное изображение оттенков серого. Формат PNG позволяет использовать alphablending.

...