![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Четыре варианта извлечения 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 |