2013-02-21 20 views
0

Я разрабатываю GUI-приложение, используя Embarcadero VCL C++ IDE для ОС Windows. В рамках этого проекта я должен изменить цвет кнопки относительно внешнего состояния. Я понял, что API windows32 не позволит изменить цвет кнопки. Не могли бы вы предложить мне, как изменить цвет кнопки?Как изменить цвет кнопки?

+0

Возможно, вы захотите пометить это winapi или что-то еще, чтобы люди знали, с каким API вы работаете. – Cornstalks

ответ

0

Вы хотите изменить фоновый цвет кнопки или цвет текста?

Поскольку окна используют визуальные темы в течение некоторого времени, если вы загрузили commctrl и включили файл манифеста, кнопка будет нарисована с использованием темы по умолчанию (текущей).

Параметры, которые я могу видеть, включают (a) произвольное рисование фона (b) изменение текстового цвета в обычном процессе рисования (c) рисование кнопки без темы (например, рисование «плоской» кнопки).

Вы можете просто нарисовать растровую кнопку, изменив растровое изображение в зависимости от состояния кнопки. Вы также можете использовать одно растровое изображение, тонируя его, используя цветовое пространство HSL или HSV, в зависимости от состояния.

Что касается кнопки типа «плоский», я думаю, что вы, вероятно, можете изменить его фоновый цвет во многом так же, как вы можете изменить цвет текста, - вмешавшись во время стандартного процесса рисования и изменив цвет с 3D_FACE (или что-то там, я забыл), что бы вы ни хотели.

Если вы посмотрите на калькулятор, включенный в Windows XP, вы можете увидеть пример изменения цвета текста.

CodeProject.com, вероятно, содержит стек статей, который поможет в этом начинании. :)

+0

Спасибо за ваши предложения. – srvolatile

+0

Я хочу изменить цвет фона (НЕ ТЕКСТ) кнопки. Я создал небольшие цветные растровые изображения и попытался показать их на растровой кнопке. Но это растровое изображение не охватывает общую кнопку. Я рассмотрю ваши предложения. еще раз спасибо за ваш ответ. – srvolatile

Смежные вопросы