Thema: Delphi Bild Tranparent machen ?

Einzelnen Beitrag anzeigen

nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#16

Re: Bild Tranparent machen ?

  Alt 28. Jun 2007, 17: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 ..... .
  Mit Zitat antworten Zitat