![]() |
![]() ![]() ![]() ![]() |
|
Четыре варианта извлечения RGB компонент из цветаDelphi , Графика и Игры , Цвета и Палитра
Автор: Fenik
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Какой из них быстрее - не знаю;
если проверите, то напишите мне.
Зависимости: Windows, Graphics
Автор: Fenik, chook_nu@uraltc.ru, Новоуральск
Copyright: Из разных источников
Дата: 4 июня 2002 г.
***************************************************** }
procedure GetRGB(Color: TColor; var R, G, B: Byte; Variant: Byte = 1);
{Четыре варианта извлечения RGB компонент цвета;
какой из них быстрее - не знаю;
если проверите то напишите мне <chook_nu@uraltc.ru> }
begin
case Variant of
1:
begin
R := Lo(Color); {красный}
G := Lo(Color shr 8); {зелёный}
B := Lo((Color shr 8) shr 8); {синий}
end;
2:
begin
R := Color mod $100;
G := Color div $100 mod $100;
B := Color div $10000;
end;
3:
begin
R := Color and $FF;
G := (Color and $FF00) shr 8;
B := (Color and $FF0000) shr 16;
end;
4:
begin
R := GetRValue(ColorToRGB(Color));
G := GetGValue(ColorToRGB(Color));
B := GetBValue(ColorToRGB(Color));
end;
end;
end;
Прекрасный фрагмент кода на Delphi! Это процедура под названием Процедура принимает четыре параметра:
Выбор варианта задается параметром Вот краткое анализе каждого варианта: Варианты 1 и 3: Два этих варианта используют битовые операции для извлечения компонентов RGB. Вариант 1 использует функцию Вариант 2: Этот вариант использует арифметические операции для извлечения компонентов RGB. Он делит значение цвета на степени 256 (2^8) для получения каждого компонента. Вариант 4: Этот вариант использует функцию Что касается того, какой из них быстрее, я сказал бы, что Вариант 1 или 3 может быть самым быстрым, поскольку они используют битовые операции, которые обычно очень быстро выполняются. Однако без реальных данных о производительности, трудно сказать с уверенностью. В целом, этот код предоставляет четыре различных подхода к извлечению компонентов RGB из значения цвета, каждый со своими trade-off в отношении скорости и сложности. В статье представлены четыре варианта извлечения RGB-компонент из цвета в Delphi, каждый из которых использует различные методы и операции с цветом. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||