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

Вниз

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

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1108800748
_lam
2005-02-19 11:12
2005.03.13
vcl.h


9-1102253410
Bryke
2004-12-05 16:30
2005.03.13
Клик!


14-1108899022
07BB:080Dh
2005-02-20 14:30
2005.03.13
Кто нибудь на работе слушает "Красную плесень"?


14-1108883719
AlterEgo of WondeRu
2005-02-20 10:15
2005.03.13
Вчера попытался посмотреть ДОМ2...


14-1109084511
Cosinus
2005-02-22 18:01
2005.03.13
Сталкивался кто-нибудь с "бинарными" шрифтами?