Registriert seit: 24. Mär 2006
300 Beiträge
Delphi 7 Professional
|
Re: Bild Tranparent machen ?
28. Jun 2007, 18:52
Ich habe das ganze jetzt in eine Funktion gepackt
Delphi-Quellcode:
procedure ImageTranzparent(Graphic: TGraphic; iTransparent: Integer;
NewCanvas: TCanvas);
var
lBmp: TBitmap;
transpro: Byte;
lCountX, lCountY: Integer;
lPixel: PRGBQuad;
lBlendStruct: TBlendFunction;
begin
if not ((iTransparent >= 0) and (iTransparent <= 100)) then
begin
if NewCanvas <> nil then
begin
NewCanvas.Draw(0, 0, Graphic);
end;
Exit;
end;
lBmp := TBitmap.Create();
lBmp.PixelFormat := pf32bit;
lBmp.Width := Graphic.Width;
lBmp.Height := Graphic.Height;
lBmp.Canvas.Draw(0, 0, Graphic);
transpro := Round(255 * iTransparent / 100);
for lCountY := 0 to lBmp.Height - 1 do
begin
lPixel := lBmp.ScanLine[lCountY];
for lCountX := 0 to lBmp.Width - 1 do
begin
lPixel.rgbReserved := transpro;
inc(lPixel);
end;
end;
lBlendStruct.BlendOp := AC_SRC_OVER;
lBlendStruct.BlendFlags := 0;
lBlendStruct.SourceConstantAlpha := 255;
lBlendStruct.AlphaFormat := AC_SRC_ALPHA;
Windows.AlphaBlend(NewCanvas.Handle, 0, 0, lBmp.Width, lBmp.Height,
lBmp.Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBlendStruct);
lBmp.Free;
end;
Nun sehe ich aber die Umrantung die eigentlich Transparent schon war wieder
Programmieren ..... .
|
|
Zitat
|