ColorDialog

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Как перевести цвет, полученный в Colordialog в RGB значения?
Long число которое возвращет функция уже несет в себе цвет, но вот
потребовались байты конкретно R = ? G = ? B = ?. Пока нигде не нашел ответа!
Может кто знает?
Гость

Сообщение Гость »

По-видимому
R = band(bshift(color,-16), 0ffh)
G = band(bshift(color,-8), 0ffh)
B = band(color, 0ffh)

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

(Добавление)

Hi,

Applications can extract the individual values of the red, green, and blue components from a color value by using the GetRValue, GetGValue, and GetBValue macros, respectively. Applications can create a color value from individual component values by using the RGB macro.

Код: Выделить всё

BYTE GetRValue(
    DWORD rgb   // 32-bit RGB value
   );
#define GetRValue(rgb)   ((BYTE) (rgb))

BYTE GetGValue(
    DWORD rgb   // 32-bit RGB value
   );
#define GetGValue(rgb)   ((BYTE) (((WORD) (rgb)) >> 8))

BYTE GetBValue(
    WORD rgb    // 32-bit RGB value
   );
#define GetBValue(rgb)   ((BYTE) ((rgb) >> 16))

COLORREF RGB(
    BYTE bRed,  // red component of color
    BYTE bGreen,        // green component of color
    BYTE bBlue  // blue component of color
   );
#define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) ! \
    ((WORD) (g) << 8)) ! \
    (((DWORD) (BYTE) (b)) << 16)))
(с) MSDN

WBR, Nick Tsigouro. MailTo:Nick@arsis.ru

Это мне напоминает анекдот про эволюцию программиста :)

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

(Добавление)

Что-то мне говорит, что должно получиться так:

Код: Выделить всё

ColorVar        LONG
ColorGroup    GROUP,PRE(CLG),OVER(ColorVar)
C        BYTE
B        BYTE
G        BYTE
R        BYTE
                      END
С уважением,
В.Смелик.

(Добавление)

Наложить на поле Long структуру из 4 байтов

Код: Выделить всё

Color Long 
ColorG  Group,Over(Color) 
_skip    Byte 
R       Byte 
G       Byte 
B       Byte 
        End 
И иметь в виду, что -1 это Color:None (наступал на эти грабли :( )

Кстати, в Cw6 есть проблемы с Color-полями в #Prompt. Пытаюсь выбрать Color:White, а получаю ...

---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
Ответить