Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COLORREF -> R, G, B, Разложить на Красный, Зеленый, Синий 
V
    Опции темы
DenageS
Дата 1.7.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Для получения цвета использую 

Код

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long


Она возвращает значение в виде COLORREF кода (например белый цвет (255,255,255) представляется в виде числа 16777215).
Подскажите алгоритм для разложения этого числа на 3 компоненты: на Красный, Зеленый, Синий цвета.
PM MAIL ICQ   Вверх
Akina
Дата 1.7.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата

COLORREF
The COLORREF value is used to specify an RGB color. 


Remarks
When specifying an explicit RGB color, the COLORREF value has the following hexadecimal form: 

0x00bbggrr 

The low-order byte contains a value for the relative intensity of red; the second byte contains a value for green; and the third byte contains a value for blue. The high-order byte must be zero. The maximum value for a single byte is 0xFF. 

To create a COLORREF color value, use the RGB macro. To extract the individual values for the red, green, and blue components of a color value, use the GetRValue, GetGValue, and GetBValue macros, respectively. 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DenageS
Дата 1.7.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 29.9.2006

Репутация: нет
Всего: нет



Akina, 
Спасибо большое!
Не могли бы вы мне еще показать как подключить этb функции (GetRValue, GetGValue, GetBValue)?
---------
Всё, нашел!

Код

Public Function GetRValue(lngColor As Long) As Byte
          GetRValue = Val("&H" & Right(Hex(lngColor), 2))
  End Function
   
  Public Function GetGValue(lngColor As Long) As Byte
          GetGValue = Val("&H" & Mid(Format(Hex(lngColor), "#000000"), 3, 2))
  End Function
   
  Public Function GetBValue(lngColor As Long) As Byte
          GetBValue = Val("&H" & Left(Format(Hex(lngColor), "#000000"), 2))
  End Function


Это сообщение отредактировал(а) DenageS - 1.7.2009, 20:22
PM MAIL ICQ   Вверх
Akina
Дата 1.7.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну лучше всё-таки целочисленные методы:
Код

GetRValue = lngColor mod 256&
GetGValue = (lngColor \ 256&) mod 256&
GetBValue = (lngColor \ 65536&) mod 256&



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.