Форум: "Прочее";
Текущий архив: 2013.09.22;
Скачать: [xml.tar.bz2];
ВнизTColor и RGB - где правда в жизни ? Найти похожие ветки
← →
Bob (2013-04-11 14:34) [0]В хелпе пояснение :
#define RGB(R, G ,B)
((DWORD) (((BYTE) (R) | \
((WORD) (R) << 8)) | \
(((DWORD) (BYTE) (R)) << 16)))
Т.е. RED - младший байт
А в юните Windows есть структуры, в которых Red и Blue переставлены
местами, например :
tagRGBQUAD = packed record
rgbBlue : Byte;
rgbGreen : Byte;
rgbRed : Byte;
rgbReserved : Byte;
end;
Т.е. младший байт - это Blue.
Да и в НЕТе попадаются программки с такой "перестановкой".
Вот конкретно : http://www.sources.ru/delphi/op/learning_asm_in_delphi_1.shtmlfunction GetColour(Red,Green,Blue:integer):TColor;
.......
{сдвигаем значение красного в правильное положение}
shl eax,16
.......
Какой же это TColor
и для чего это нужно, если реальный формат TColor = Longint
эквивалентный packet record R,G,B,a : byte. ?
Или я где-то не там?
← →
Дмитрий С © (2013-04-11 14:40) [1]
> если реальный формат TColor = Longint
> эквивалентный packet record R,G,B,a : byte
TColor <> RGBA, по крайней мере в TColor нет альфа составляющей.
А вопрос в чем твой?
← →
Rouse_ © (2013-04-11 14:41) [2]Откуда ты такую декларацию взял?
#define RGB(R, G ,B)
((DWORD) (((BYTE) (R) | \
((WORD) (R) << 8)) | \
(((DWORD) (BYTE) (R)) << 16)))
здесь синий и зеленые цвета вообще не используются...
← →
Sha © (2013-04-11 14:42) [3]В TColor в младшем - красный, в изображении формата pf32Bit в младшем - синий.
Легко запомнить )
← →
Anatoly Podgoretsky © (2013-04-11 14:48) [4]
> Rouse_ © (11.04.13 14:41) [2]
Вроде это Бейсик
← →
Павиа (2013-04-11 15:17) [5]Формат TColor отличается от формата сырых данных пикселя используемого при Bimap.PixelFormat=pf24bit
Видимо при проектирование кто-то не доглядел.
т.е
Формат Bitmap.Pixel[x,y]=TColor отличается от Bitmap.ScanLine.
С тех пор и приходится использовать 2 структуры.
← →
Bob (2013-04-11 15:19) [6]> Rouse_ ©
"Я дико извиняюсь" : там в справке были маленькие вуквы
Когда правил - сплоховал ;(
#define RGB(R, G ,B)
((DWORD) (((BYTE) (R) | \
((WORD) (G) << 8)) | \
(((DWORD) (BYTE) (B)) << 16)))
← →
Jeer © (2013-04-11 15:20) [7]Давно рекомендую смотреть на мир в черно-белом:)
Не промахнешься - если, что.
← →
Bob (2013-04-11 15:22) [8]>Sha ©
>Павиа
Воот где собака порылась ! ;)
СПАСИБО
← →
Bob (2013-04-11 15:25) [9]>Jeer ©
И вообще упростить жизнь до монохрома ;)
← →
Дмитрий С © (2013-04-11 15:29) [10]Вообще хороший вопрос, зачем придумали цвета:)
← →
Дмитрий С © (2013-04-11 15:47) [11]Проблема, думаю, в том, что в TColor закодированы два множества winapi: rgb цвета и коды системных цветов. Вполне вероятно его намеренно сделали несовместимым, чтобы TColor не использовали в качестве RGB или RGBa цвета.
← →
DevilDevil © (2013-04-11 16:09) [12]> Дмитрий С © (11.04.13 15:47) [11]
согласен
← →
Dimka Maslov © (2013-04-11 16:32) [13]TColor введён для совместимости с COLORREF из WinAPI. Тот факт, что в каком-то другом месте порядок байт другой - это не есть проблема разработчиков WinAPI или VCL.
← →
Jeer © (2013-04-11 17:19) [14]Давайте еще поспорим о big & little endian :)
← →
DevilDevil © (2013-04-11 17:25) [15]кстати на ARM такая же последовательность байт как на x86 или нет ?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.09.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.002 c