Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1357671425
hansa
2013-01-08 22:57
2013.09.22
Собственник визуальных компонент


15-1365798603
Юрий
2013-04-13 00:30
2013.09.22
С днем рождения ! 13 апреля 2013 суббота


15-1364761592
TUser
2013-04-01 00:26
2013.09.22
Рисуем лошадь


2-1357824398
LDV
2013-01-10 17:26
2013.09.22
использование Assert


15-1365971403
Юрий
2013-04-15 00:30
2013.09.22
С днем рождения ! 15 апреля 2013 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский