(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
Re: Überblendung zweier Bitmaps
13. Sep 2004, 17:50
Unter welchem Windows soll das ganze funktionieren? Bei XP geht folgendes (ab 2000 glaub ich)
Delphi-Quellcode:
procedure BlendBitmap(Dest: TBitmap; ABlendColor: TColor; ABlendIntensity: Byte = 127; GammaCorrection: Integer = 0);
var LSource: TBitmap;
LBlendstruct: TBlendFunction;
begin
LBlendstruct.BlendOp := AC_SRC_OVER;
LBlendstruct.BlendFlags := 0;
LBlendstruct.SourceConstantAlpha := ABlendIntensity;// trunc(APercentBlendColor * 255 / 100);
LBlendstruct.AlphaFormat := 0; //AC_SRC_ALPHA;
LSource := TBitmap.Create;
LSource.Width := 1; LSource.Height := 1;
LSource.Canvas.Pixels[0,0] := ABlendColor;
AlphaBlend(Dest.canvas.handle, 0, 0, Dest.width, Dest.height, LSource.canvas.Handle, 0, 0, 1, 1, LBlendstruct);
if GammaCorrection <> 0 then
begin
LSource.Canvas.Pixels[0,0] := clWhite;
LBlendstruct.SourceConstantAlpha := GammaCorrection;
AlphaBlend(Dest.canvas.handle, 0, 0, Dest.width, Dest.height, LSource.canvas.Handle, 0, 0, 1, 1, LBlendstruct);
end;
LSource.Free;
end;
Jens Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
|
|
Zitat
|