Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.22;
Скачать: CL | DM;

Вниз

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.shtml

function 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
15-1365507314
Copyrighter
2013-04-09 15:35
2013.09.22
Регистрация ПО


3-1293012227
adigozelov
2010-12-22 13:03
2013.09.22
запрос


15-1365495258
alexdn
2013-04-09 12:14
2013.09.22
Похоже полетел картридж


15-1365670567
Dmitry1987
2013-04-11 12:56
2013.09.22
покупка Verisign


15-1365717745
картман
2013-04-12 02:02
2013.09.22
словарь 2