ist gar nicht so schwer, du musst dir nur vorher überlegen ob schwarz 100% transparenz darstellt oder weiß. Wenn du jetzt schwarz als Transparenz verwendest so musst du bei einem schwarzen pixel gar nichts machen weil ja 100% transparent. Bei einem weißen pixel malst du dasPixel wie es ist auf die Canvas und ansonstne musst du die Farben im Verhältnis mischen (da gibt dann der grauwert an zu welchen teilen gemicht wird)
hier ne funktion um 2 farben zu mischen
Delphi-Quellcode:
function GetBlendColor(Basecolor: TColor; Blendcolor: TColor; BlendIntensity: Byte=127): TColor;
type
TMyColor =
record
red: Byte;
green: Byte;
blue: Byte;
end;
var LF1, LF2: TMyColor;
begin
LF1.red := GetRValue(Basecolor);
LF1.green := GetGValue(Basecolor);
LF1.blue := GetBValue(Basecolor);
LF2.red := (LF1.red * (255-BlendIntensity) + GetRValue(Blendcolor) * BlendIntensity)
div 255;
LF2.green := (LF1.green * (255-BlendIntensity) + GetGValue(Blendcolor) * BlendIntensity)
div 255;
LF2.blue := (LF1.blue * (255-BlendIntensity) + GetBValue(Blendcolor) * BlendIntensity)
div 255;
result :=
rgb(LF2.red, LF2.green, LF2.blue);
end;
Bei blendintensity gibst du den schwarzweiß-wert des pixels an und für die anderen beiden Farben eben die Farben die gemischt werden sollen