AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.08.2017, 12:47   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
RGB - HEX цвета как правильно переводить
Привет всем.
Столкнулся с проблемой подбор цветов.
Похоже в аксапте неверно сделан перевод из RGB кодировки цвета в HEX

WinApi класс
методы

X++:
client static container getSysColor(int hColor)
{
    int         rgb;
    DLL         _winApiDLL      = new DLL(#UserDLL);
    DLLFunction _getSysColor    = new DLLFunction(_winApiDLL, 'GetSysColor');
    _getSysColor.returns(ExtTypes::DWord);
    _getSysColor.arg(ExtTypes::DWord);

    rgb = _getSysColor.call(hColor);

    return [rgb & 0xff, (rgb & 0xff00)>>#offset8 , (rgb & 0xff0000)>>#offset16];

}
X++:
static client server int rgb2int(RGBint r, RGBint g, RGBint b)
{
    return r  + g<<#offset8 + b<<#offset16;
}
X++:
client server static container rgBint2Con(int rgb)
{
    return [rgb & 0xff, (rgb & 0xff00)>>8 , (rgb & 0xff0000)>>16];
}
При переводе поменяны местами красный и синий.
Странно как-то.
Возможно я что-то не понимаю, поправьте меня если я неправ.

Как обнаружил.
Использовал на форме HTML контрол.
Взял цвет фона меню/кнопки из стандартной цветовой схемы winXP
RGB (212, 208, 200)

Перевел таким кодом
X++:
info(Global::int2Hex(Winapi::rgb2int(212, 208, 200), 6));
получил C8D0D4 (визуально такой цвет неправильный, так как если его поставить в текст html документа то цвет фона отдает в голубизну по сравнению с обычным фоном на формах. А если поставить D4D0C8 как выдает сайт https://colorscheme.ru/color-converter.html то тогда получается то что надо)

X++:
info(Global::int2Hex(Winapi::rgb2int(0, 0, 255), 6));
дает FF0000

а везде в аксапте при формировании цвета в HTML разметке FF0000 - это красный !

Скормил сайту
https://colorscheme.ru/color-converter.html
RGB (212, 208, 200)
и
RGB (0, 0, 255)

получил
D4D0C8
и
#0000FF


Где собака порылась ?

P.S. Ax2009 приложение SP5

Последний раз редактировалось Logger; 18.08.2017 в 13:14.
Теги
rgb

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно создать в коде X++ новый planned order (ReqPO, ReqTrans) rkorchagin DAX: Программирование 5 02.06.2016 18:00
Открытая сумма по счету-фактуре - как правильно вычислить? IKA DAX: Программирование 7 21.03.2011 19:46
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00
Цвета в диаграмме Ганта Betscriber DAX: Функционал 3 09.03.2006 15:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:23.