Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2013, 02:07   #1
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию Как получить цвет заливки контрола

На форме лежит панель, цвет панели переодически будет меняться.
Вопрос:
Как на Api получить цвет этой панели.
Пробывал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
dcPan : HDC;
ColorPan : Cardinal;
begin
dcPan := GetWindowDC(Panel1.Handle);
ColorPan :=GetDCBrushColor(dcPan);
ShowMessage(IntToStr(ColorPan));
end;
Не получается, результат всегда один и тот же - 16777215
Тоба вне форума Ответить с цитированием
Старый 26.06.2013, 07:54   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Попытайтесь прочитать один или несколько (если на панели есть какие-то надписи) пикселей и проанализировать их цвет.
s-andriano вне форума Ответить с цитированием
Старый 26.06.2013, 10:55   #3
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Чем не устраивает свойство Color
Код:
Panel1.Color
// если цвет кисти нужен
Panel1.Brush.Color
Nuklon вне форума Ответить с цитированием
Старый 27.06.2013, 01:55   #4
Тоба
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 86
По умолчанию

Цитата:
Сообщение от Nuklon Посмотреть сообщение
Чем не устраивает свойство Color
Если бы устраивало, то данный топик бы не создавался.
Необходимо на API это реализовать.

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Попытайтесь прочитать один или несколько (если на панели есть какие-то надписи) пикселей и проанализировать их цвет.
Можно и так конечно выкрутиться, но всё-же должен же быть рациональный способ. Есть (же вроде) функции для решения этой задачи:

GetDCBrushColor
GetBkColor
и т.д.

как не пробовал - не получается!
Тоба вне форума Ответить с цитированием
Старый 27.06.2013, 02:53   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Тоба Посмотреть сообщение
Если бы устраивало, то данный топик бы не создавался.
Необходимо на API это реализовать.



Можно и так конечно выкрутиться, но всё-же должен же быть рациональный способ. Есть (же вроде) функции для решения этой задачи:

GetDCBrushColor
GetBkColor
и т.д.

как не пробовал - не получается!
окно не обязано применять автоотрисовку, оно может рисовать само, и тогда ничего вы не получите так просто.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.06.2013, 07:30   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как не пробовал - не получается!
Я попробовал у меня получилось:
Код:
Caption:=IntToHex(GetBkColor(PanelHandle),10);
Показывай как пробовал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2013, 07:31   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как не пробовал - не получается!
Я попробовал у меня получилось:
Код:
Caption:=IntToHex(GetBkColor(PanelHandle),10);
Показывай как пробовал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2013, 14:44   #8
Stertor
Заблокирован
 
Регистрация: 17.07.2013
Сообщений: 104
По умолчанию

Попробуйте с помощью GetPixel, это даже правильнее.
Stertor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвет заливки ячейки в зависимости от значений RGB nikcher Microsoft Office Excel 6 24.08.2016 16:52
Получить изображение контрола созданного в рантайм Celestia Общие вопросы Delphi 3 08.05.2011 10:05
Как быстро получить цвет пикселя по координатам i-cpp Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 27.08.2010 15:05
Как получить цвет точки в Series Компонента TChart tavrocotaps Общие вопросы Delphi 1 30.11.2009 12:49
Условие в макросе на цвет заливки ячеек Chelentano Microsoft Office Excel 2 03.08.2009 23:44