Thema: Delphi Bild Tranparent machen ?

Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Bild Tranparent machen ?

  Alt 28. Jun 2007, 15:15
folgender Quelltext erstellt dir ein schwarzes Bild (200x200) welches links oben ganz transparent ist nach rechts unten undurchsichtig wird. Anschließend wird es gespeichert unter:
c:\alphabmp.bmp
Delphi-Quellcode:
var
  lBmp : TBitmap;
  lCountX,
  lCountY : Integer;
  lPixel : PRGBQuad;
begin
  lBmp := TBitmap.Create();
  lBmp.PixelFormat := pf32bit;
  lBmp.Width := 200;
  lBmp.Height := 200;
  for lCountY := 0 to lBmp.Height - 1 do
  begin
    lPixel := lBmp.ScanLine[lCountY];
    for lCountX := 0 to lBmp.Width - 1 do
    begin
      lPixel.rgbBlue := 0;
      lPixel.rgbGreen := 0;
      lPixel.rgbRed := 0;
      lPixel.rgbReserved := Trunc((lCountX * lCountY) * 255 / (lBmp.Width * lBmp.Height));
      inc(lPixel);
    end;
  end;
  lBmp.SaveToFile('c:\alphabmp.bmp');
  lBmp.Free;
und hier das ganze nochmal ohne speicherung sondern mit direkter Ausgabe auf das Formular:
Delphi-Quellcode:
var
  lBmp : TBitmap;
  lCountX,
  lCountY : Integer;
  lPixel : PRGBQuad;
  lBlendStruct : TBlendFunction;
begin
  lBmp := TBitmap.Create();
  lBmp.PixelFormat := pf32bit;
  lBmp.Width := 200;
  lBmp.Height := 200;
  for lCountY := 0 to lBmp.Height - 1 do
  begin
    lPixel := lBmp.ScanLine[lCountY];
    for lCountX := 0 to lBmp.Width - 1 do
    begin
      lPixel.rgbBlue := 0;
      lPixel.rgbGreen := 0;
      lPixel.rgbRed := 0;
      lPixel.rgbReserved := Trunc((lCountX * lCountY) * 255 / (lBmp.Width * lBmp.Height));
      inc(lPixel);
    end;
  end;
  lBlendStruct.BlendOp := AC_SRC_OVER;
  lBlendStruct.BlendFlags := 0;
  lBlendStruct.SourceConstantAlpha := 255;
  lBlendStruct.AlphaFormat := AC_SRC_ALPHA;
  Windows.AlphaBlend(Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBmp.Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBlendStruct);
  lBmp.Free;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat