Форум: "Основная";
Текущий архив: 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.pasfunction 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.039 c