Получить прозрачный цветDelphi , Графика и Игры , Цвета и ПалитраПолучить прозрачный цвет
Оформил: DeeCo 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, который предоставляет функции для преобразования между различными форматами цветов и расчета прозрачности фона с прозрачным задником. Вот краткое описание того, что каждый функция делает:
Код включает комментарии, объясняющие, что каждый раздел делает. Он также предоставляет примеры использования этих функций в вашем программе Delphi. Чтобы получить прозрачный цвет, вы можете вызвать функцию Пример:
Это рассчитает прозрачный цвет, комбинируя цвет фона и цвет переднего плана с фактором прозрачности в 50%. Обратите внимание, что этот код предполагает, что вы работаете в Delphi, и тип Функция получения прозрачного цвета в Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |