Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

TColor   Найти похожие ветки 

 
hgd   (2005-02-28 17:33) [0]

Скажите правильно ли, что вычисление значение типа TColor = R + G + B (+ = объединение значений) и перевод в 10 форму счисления?

тоесть R = G = B = 72

TColor = (484848) = 4737096, верно?


 
TUser ©   (2005-02-28 17:44) [1]

Нет. Надо shl 8 и 16 делать.


 
}|{yk ©   (2005-02-28 17:53) [2]

В WinAPI есть функция RGB.


 
palva1   (2005-02-28 17:55) [3]

А вообще функция такая есть RGB


 
Anatoly Podgoretsky ©   (2005-02-28 17:59) [4]

hgd   (28.02.05 17:33)  
Скажите правильно ли, что вычисление значение типа TColor = R + G + B

При указанном равенстве состовляющих, равносильно 72*3


 
Хинт ©   (2005-02-28 18:06) [5]

Можно так:
type
TRGB=record
  R,G,B,Temp:byte;
  end;
var
RGB:TRGB;
begin
...
RGB:=TRGB(BMP.Canvas.Pixels[x,y]);
...
end;


Или написать:
Color:TColor;
RGB:TRGB absolute Color;


 
hgd   (2005-02-28 18:19) [6]

Да меня вообщем то больше интересует теория, КАК в TColor сидит RGB?


 
Zeqfreed ©   (2005-02-28 18:27) [7]

hgd   (28.02.05 18:19) [6]

Windows.pas

function RGB(r, g, b: Byte): COLORREF;
begin
 Result := (r or (g shl 8) or (b shl 16));
end;


(C) Borland Software Corporation


 
Просто Джо ©   (2005-02-28 18:28) [8]


> Да меня вообщем то больше интересует теория, КАК в TColor
> сидит RGB?


Три младших байта отвечают за интенсивность составляющих R, G и B:

If you specify TColor as a specific 4-byte hexadecimal number instead of using the constants defined in the Graphics unit, the low three bytes represent RGB color intensities for blue, green, and red, respectively. The value $00FF0000 represents full-intensity, pure blue, $0000FF00 is pure green, and $000000FF is pure red. $00000000 is black and $00FFFFFF is white.

Самый старший байт отвечает за палитру:

If the highest-order byte is zero ($00), the color obtained is the closest matching color in the system palette. If the highest-order byte is one ($01), the color obtained is the closest matching color in the currently realized palette. If the highest-order byte is two ($02), the value is matched with the nearest color in the logical palette of the current device context.

(с) Справка по типу TColor.


 
Просто Джо ©   (2005-02-28 18:30) [9]

То есть, отбросив старший байт из значения типа TColor получишь просто цвет RGB без данных о палитре.


 
Sphinx   (2005-02-28 18:39) [10]

Хотелось бы напомнить, что "хитрый" Борланд "пошутил" и поменял в TColor биты R и B местами, поэтому просто> отбросив старший байт из значения типа TColor получается BGR цвет :)


 
Sphinx   (2005-02-28 18:43) [11]

> The value $00FF0000 represents full-intensity, pure blue,
> $0000FF00 is pure green, and $000000FF is pure red.

Что и подтверждает мои слова...


 
Anatoly Podgoretsky ©   (2005-02-28 20:46) [12]

hgd   (28.02.05 18:19) [6]
В TColor не сидит RGB, только как частный случай. Для получения RGB надо использовать функцию ColorToRGB


 
Sergey_Masloff   (2005-02-28 22:12) [13]

}|{yk ©   (28.02.05 17:53) [2]
>В WinAPI есть функция RGB.
Функции от макросов отличаем? ;-)


 
Просто Джо ©   (2005-02-28 22:45) [14]


> [11] Sphinx   (28.02.05 18:43)


Хм... Действительно, век живи, век учись. Борланд хитер, однако.


 
Anatoly Podgoretsky ©   (2005-02-28 23:05) [15]

Sphinx   (28.02.05 18:39) [10]
Борланд не шутил, ты просто путаешь Integer c array of byte



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1109067231
1008
2005-02-22 13:13
2005.03.13
Как с этого сайта статьи гамузом стянуть?


3-1108107925
kivadim
2005-02-11 10:45
2005.03.13
вопрос по трехзвенным системам


6-1104808568
Трям
2005-01-04 06:16
2005.03.13
Железо удалённого компьютера


3-1107902461
TechnoDreamer
2005-02-09 01:41
2005.03.13
Порядок записей в TADODataSet


1-1109006380
Alek
2005-02-21 20:19
2005.03.13
Фреймы из длл





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский