Vielen Dank für die schnellen Hilfen.
In der Zwischenzeit habe ich mich auch natürlich noch auf die Suche nach Lösungen gemacht und eine "Halblösung" gefunden.
In diesem coolen Forum habe ich die Funktion "DrawFrostedGlass" gefunden (
www.delphipraxis.net/topic11274.html). Diese habe ich etwas modifiziert und es funktioniert eigentlich schon sehr gut.
Hier der Quelltext:
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
var blending, i: Byte;
begin
blending := 250;
for i := 0 to 25 do begin
Rechteck := Rect(0, 100 + i, Width, 102 + i);
blending := blending - 10;
DrawFrostedGlass(Image1.Picture.Bitmap, Rechteck, 16777215, blending);
end;
end;
procedure SplitColorToRGB(const Color: TColor; var r, g, b: Byte);
begin
r := ColorToRGB(Color) and $0000FF;
g := (ColorToRGB(Color) and $00FF00) shr 8;
b := (ColorToRGB(Color) and $FF0000) shr 16;
end;
function RGBToColor(const r, g, b: Byte): TColor;
begin
Result := TColor(r + (g shl 8) + (b shl 16));
end;
function CalcBlending(const Source, Back, Alpha: Byte): Byte;
begin
Result := Back + ((Source - Back) * Alpha div 255);
end;
procedure TForm1.DrawFrostedGlass(Bitmap: TBitmap; GlassRect: TRect; const Milk: TColor = clWhite; Alpha: Byte = 128);
var r, g, b: Byte;
x, y: Integer;
P: PByteArray;
begin
with Bitmap.Canvas, Bitmap.Canvas.Pen do begin
Color := Milk;
Brush.Style := bsClear;
rectangle(0, 0, 0, 0); //warum das hier stehen muss, damit der Effekt gezeichnet
// wird, verstehe ich auch nicht
end;
Bitmap.PixelFormat := pf24Bit;
GlassRect.Left := (GlassRect.Left * 3) + 3;
GlassRect.Right := (GlassRect.Right * 3) - 3;
SplitColorToRGB(Milk, r, g, b);
for y := GlassRect.Top + 1 to GlassRect.Bottom - 1 do
begin
P := Bitmap.ScanLine[y];
x := GlassRect.Left;
repeat
P[x+0] := CalcBlending(P[x+0], r, Alpha);
P[x+1] := CalcBlending(P[x+1], g, Alpha);
P[x+2] := CalcBlending(P[x+2], b, Alpha);
Inc(x, 3);
until x >= GlassRect.Right;
end;
end;
Soweit, so gut. Ich habe aber noch ein Problem: Dieser Effekte sollte ovalförmig um das Bild gezeichnet werden. Da ich nun endgültig keinen Plan mehr habe, wie das gehen könnte, bin ich wieder auf eure Hilfe angewiesen.
Vielen Dank