![]() |
![]() ![]() ![]() ![]() |
|
Работа с цветамиDelphi , Графика и Игры , Цвета и Палитра
Автор: Gero
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Нeсколько полезных функций для работы с цветами.
// Получить цвет, темнее исходного на Percent процентов
function DarkerColor(const Color : TColor; Percent : Integer) : TColor;
// Получить цвет, светлее исходного на Percent процентов
function LighterColor(const Color : TColor; Percent : Integer) : TColor;
// Смешать несколько цветов и получить средний
function MixColors(const Colors : array of TColor) : TColor;
// Сделать цвет черно-белым
function GrayColor(Color : TColor) : TColor;
Зависимости: Windows, Graphics
Автор: Gero, tov.vaskin@inbox.ru, Днепропетровск(Украина)
Copyright: Gero
Дата: 11 февраля 2004 г.
***************************************************** }
function DarkerColor(const Color: TColor; Percent: Integer): TColor;
var
R, G, B: Byte;
begin
Result := Color;
if Percent <= 0 then
Exit;
if Percent > 100 then
Percent := 100;
Result := ColorToRGB(Color);
R := GetRValue(Result);
G := GetGValue(Result);
B := GetBValue(Result);
R := R - R * Percent div 100;
G := G - G * Percent div 100;
B := B - B * Percent div 100;
Result := RGB(R, G, B);
end;
function LighterColor(const Color: TColor; Percent: Integer): TColor;
var
R, G, B: Byte;
begin
Result := Color;
if Percent <= 0 then
Exit;
if Percent > 100 then
Percent := 100;
Result := ColorToRGB(Result);
R := GetRValue(Result);
G := GetGValue(Result);
B := GetBValue(Result);
R := R + (255 - R) * Percent div 100;
G := G + (255 - G) * Percent div 100;
B := B + (255 - B) * Percent div 100;
Result := RGB(R, G, B);
end;
function MixColors(const Colors: array of TColor): TColor;
var
R, G, B: Integer;
i: Integer;
L: Integer;
begin
R := 0;
G := 0;
B := 0;
for i := Low(Colors) to High(Colors) do
begin
Result := ColorToRGB(Colors[i]);
R := R + GetRValue(Result);
G := G + GetGValue(Result);
B := B + GetBValue(Result);
end;
L := Length(Colors);
Result := RGB(R div L, G div L, B div L);
end;
function GrayColor(Color: TColor): TColor;
var
Gray: Byte;
begin
Result := ColorToRGB(Color);
Gray := (GetRValue(Result) + GetGValue(Result) + GetBValue(Result)) div 3;
Result := RGB(Gray, Gray, Gray);
end;
Пример использования:
var
i, j: Integer;
begin
...
with Bitmap1 do
for i := 0 to Width - 1 do
for j := 0 to Height - 1 do
Canvas.Pixels[i, j] := GrayColor(Canvas.Pixels[i, j]);
...
end;
Это код-snippet на языке Delphi, который предназначен для работы с цветами в Windows Graphics окружении. Автором этого кода является Gero, и он был опубликован на сайте delphibase.endimus.com. Код включает в себя четыре функции:
Код также включает пример использования этих функций. В этом примере пиксели битовки конвертируются в серый с помощью функции Вот подробное описание каждой функции:
В целом, эти функции предоставляют полезные инструменты для работы с цветами в приложениях Delphi. Статья представляет собой обзор функций для работы с цветами на языке Delphi, включая получение темнее или светлее исходного цвета, смешивание цветов и перевод в черно-белый. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||