18.08.2017, 12:47 | #1 |
Участник
|
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)); X++: info(Global::int2Hex(Winapi::rgb2int(0, 0, 255), 6)); а везде в аксапте при формировании цвета в 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. |
|