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;