Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить прозрачный цвет

Delphi , Графика и Игры , Цвета и Палитра

Получить прозрачный цвет

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

interface
 {------------------------------------------------------------------------------}

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
 {------------------------------------------------------------------------------}
 //Hilfsfunktion zum Auslesen eines Bytes aus TColor 
//Value gibt die Farbe an 
//Shift gibt die Anzahl der zu schiebenden Bits an 
//Bsp: um aus Value=$00120000 das Rot-Byte auszulesen, muss Shift den Wert 16 haben 
//     ($12 wird dann zuruckgegeben 
function GetByte(Value : TColor; Shift : byte): byte;
   {------------------------------------------------------------------------------}
   //Hilfsprozedur zum Auslesen des Rot-,Grun- und Blauwertes aus TColor 
  //nutzt GetByte 
procedure ColorToRGB(Color : TColor; var R, G, B : byte);
   {------------------------------------------------------------------------------}
   //Hilfsfunckion zum Erstellen eines TColor aus Rot-,Grun- und Blauwerten 
function RGBToColor(R, G, B : byte): TColor;
   {------------------------------------------------------------------------------}
   //Eigentliche Transparenzfunktion, ermittelt die Transparenzfarbe des transparenten 
  //Vordergrunds, wenn Hintergrundfarbe=BGColor und Vordergrundfarbe=FRColor ist 
  //TranspValue gibt den Ganzzahligen Prozentsatz des Transparenzwertes an 
function TransparencyColor(BGColor, FRColor : TColor; TranspValue : byte): TColor;
   {------------------------------------------------------------------------------}

 implementation

 function GetByte(Value : TColor; Shift : byte): byte;
 begin
   Result := (Value and ($FF shl Shift)) shr Shift;
   //Byte an entsprechender Stelle maskieren und dann nach Rechts verschieben 
end;
 {------------------------------------------------------------------------------}

 procedure ColorToRGB(Color : TColor; var R, G, B : byte);
 begin
   R := GetByte(Color, 16); //zweites Byte aus Color (v.R.) 
  G := GetByte(Color, 8);  //drittes Byte aus Color (v.R.) 
  B := GetByte(Color, 0);  //viertes Byte aus Color (v.R.) 
end;
 {------------------------------------------------------------------------------}

 function RGBToColor(R, G, B : byte): TColor;
 begin
   Result := ((R and $FF) shl 16) +
     ((G and $FF) shl 8) + (B and $FF);
 end;
 {------------------------------------------------------------------------------}

 function TransparencyColor(BGColor, FRColor : TColor; TranspValue : byte): TColor;
 var
    BGR, BGG, BGB, FRR, FRG, FRB, ergR, ergG, ergB : byte;
   TrFact : real;
 begin
   //Transparenzfaktor errechnen 
  TrFact := TranspValue / 100;

   //Hinter- und Vordergrundfarbe in Rot-,Grun- und Blauwerte splitten 
  ColorToRGB(BGColor, BGR, BGG, BGB);
   ColorToRGB(FRColor, FRR, FRG, FRB);

   //Ergebnisfarbwerte errechnen 
  ergR := byte(Trunc(BGR * TrFact + FRR * (1 - TrFact)));
   ergG := byte(Trunc(BGG * TrFact + FRG * (1 - TrFact)));
   ergB := byte(Trunc(BGB * TrFact + FRB * (1 - TrFact)));

   //Rot-,Grun- und Blauwert zu TColor und zuruckgeben 
  Result := RGBToColor(ErgR, ergG, ergB);
 end;
 {------------------------------------------------------------------------------}

Вот перевод текста на русский язык:

Это код программирования на Delphi, который предоставляет функции для преобразования между различными форматами цветов и расчета прозрачности фона с прозрачным задником.

Вот краткое описание того, что каждый функция делает:

  1. GetByte(Value: TColor; Shift: byte): byte: Функция извлекает конкретный байт из значения TColor, смещая биты соответствующим образом.
  2. ColorToRGB(Color: TColor; var R, G, B: byte): Процедура разбивает значение TColor на его отдельные компоненты красного, зеленого и синего цветов (R, G, B).
  3. RGBToColor(R, G, B: byte): TColor: Функция конвертирует три байта (R, G, B) в значение TColor.
  4. TransparencyColor(BGColor, FRColor: TColor; TranspValue: byte): TColor: Функция рассчитывает прозрачность фона с прозрачным задником, комбинируя красные, зеленые и синие компоненты двух цветов (цвет фона и цвет переднего плана) с заданным значением прозрачности.

Код включает комментарии, объясняющие, что каждый раздел делает. Он также предоставляет примеры использования этих функций в вашем программе Delphi.

Чтобы получить прозрачный цвет, вы можете вызвать функцию TransparencyColor, предоставив параметрами цвет фона, цвет переднего плана и значение прозрачности.

Пример:

var
  BGColor: TColor;
  FRColor: TColor;
  TranspValue: byte;

// Установите свои цвета и значение прозрачности здесь
BGColor  := clWhite; // Цвет фона
FRColor  := clRed;    // Цвет переднего плана
TranspValue  := 50;  // Значение прозрачности (0-100)

Result  := TransparencyColor(BGColor, FRColor, TranspValue);

Это рассчитает прозрачный цвет, комбинируя цвет фона и цвет переднего плана с фактором прозрачности в 50%.

Обратите внимание, что этот код предполагает, что вы работаете в Delphi, и тип TColor является специфичным для библиотеки графики Delphi.

Функция получения прозрачного цвета в Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Цвета и Палитра ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:20:59/0.0055909156799316/1