Уродливые "отключенные" изображения TMainMenu

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

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

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

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

Ответ 1

Там отличный пост в блог Galfar Lair, который описывает проблему, и имеет код для обходного пути, переопределяя метод DoDraw TImageList.

Здесь pic (связанный) показывает 'before' и 'after'.

alt text

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

Ответ 2

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