TForm1 = class(TForm) .. private bmp: TBitmap; end;..procedure TForm1.FormCreate(Sender: TObject);var i, j, n: integer; data: PByte; pic: TPicture;begin randomize; bmp:=TBitmap.Create; bmp.PixelFormat:=pf32bit; bmp.SetSize(256, 256); data:=bmp.RawImage.Data; for i:=0 to 255 do for j:=0 to 255 do begin n:=(j*256+i)*4; data[n+0]:=0; // B data[n+1]:=255; // G data[n+2]:=0; // R data[n+3]:=i*2 mod 256; // A end; bmp.SaveToFile('tmp.bmp'); pic:=TPicture.Create; pic.Assign(bmp); pic.SaveToFile('tmp.png'); pic.Free;end;procedure TForm1.FormDestroy(Sender: TObject);begin bmp.Free;end;procedure TForm1.FormPaint(Sender: TObject);begin canvas.Clear; canvas.Draw(0, 0, bmp);end;
procedure TfGrid.CrearPng(FileName: String; Transparency: TColor);var screen: TBitmap; pic: TPicture; data: PByte; i, j, n: integer;begin screen := CrearBitmap(fGrid); data:= screen.RawImage.Data; for i:=0 to screen.Width-1 do begin for j:=0 to screen.Height-1 do begin n:=(j*screen.Height + i)*4; data[n+3]:= 255;//Alpha if(RGBToColor(data[n+2], data[n+1], data[n+0])=Transparency)then data[n+3]:= 1;//Alpha end; end; pic:=TPicture.Create; pic.Assign(screen); pic.SaveToFile(FileName); pic.Free;end;function TfGrid.CrearBitmap(pControl : TCustomControl):TBitmap;var bmp: TBitmap; r: TRect;begin r:= Rect(0, 0, pControl.ClientWidth, pControl.ClientHeight); bmp:= TBitmap.Create; bmp.PixelFormat:=pf32bit; bmp.SetSize(pControl.ClientWidth, pControl.ClientHeight); bmp.Canvas.CopyRect(r, pControl.Canvas, r); result:= bmp;end;
if (RGBToColor(data[n+2], data[n+1], data[n+0])=Transparency) then begin data[n+0]:=0; data[n+1]:=0; data[n+2]:=0; data[n+3]:=1; // or 0 ...end;
procedure TForm1.FormCreate(Sender: TObject);var i, j, n: integer; data: PByte; pic: TPicture;begin randomize; bmp:=TBitmap.Create; bmp.PixelFormat:=pf32bit; bmp.SetSize(2048, 2048); data:=bmp.RawImage.Data; for i:=0 to 2047 do for j:=0 to 2047 do begin n:=(j*2048+i)*4; if (i mod 100=0) or (j mod 100=0) then begin data[n+0]:=255; // B data[n+1]:=0; // G data[n+2]:=255; // R data[n+3]:=255; // A end else begin data[n+0]:=255; // B data[n+1]:=255; // G data[n+2]:=255; // R data[n+3]:=0; // A end; end; bmp.SaveToFile('d:\netti\tmp.bmp'); pic:=TPicture.Create; pic.Assign(bmp); pic.SaveToFile('d:\netti\tmp.png'); pic.Free;end;
n:=(j*screen.Height + i)*4;
n:=(j*screen.Width + i)*4;
procedure TfGrid.CrearPng(FileName: String; Transparency: TColor);var screen: TBitmap; pic: TPicture; data: PByte; i, j, n: integer;begin screen := CrearBitmap(fGrid); data:= screen.RawImage.Data; for i:=0 to screen.Height-1 do begin for j:=0 to screen.Width-1 do begin if(i>0)then begin n:=(i*screen.Width + j)*4; data[n+3]:= 255;//Alpha if(RGBToColor(data[n+2], data[n+1], data[n+0])=Transparency)then data[n+3]:= 1;//Alpha end; end; end; pic:=TPicture.Create; pic.Assign(screen); pic.SaveToFile(FileName); pic.Free;end;