// Mehrere Bitmaps
von Arrays oder Records werden zusammen in eine Datei var
bilder: array[0..2] of TBitmap;
tf: TFilestream;
const datei = 'c:\TestBitmapArray.str';
// speichern
procedure TForm1.Button2Click(Sender: TObject);
var x: integer;
begin
for x := 0 to 2 do bilder[x] := TBitmap.create;
bilder[0].loadfromfile('d:\bilder\corel033.bmp');
bilder[1].loadfromfile('d:\bilder\corel043.bmp');
bilder[2].loadfromfile('d:\bilder\corel044.bmp');
tf := TFilestream.create(datei, fmcreate);
for x := 0 to 2 do begin
bilder[x].savetostream(tf);
bilder[x].free;
end;
tf.free;
end;
// laden
procedure TForm1.Button3Click(Sender: TObject);
var x: integer;
begin
tf := TFilestream.create(datei, fmopenread);
for x := 0 to 2 do begin
bilder[x] := TBitmap.Create;
bilder[x].loadfromstream(tf);
end;
tf.free;
// Bilder beispielsweise auf Form1 zeichnen
canvas.draw(0, 0, bilder[0]);
canvas.draw(bilder[0].width, 0, bilder[1]);
canvas.draw(0, bilder[0].height, bilder[2]);
//------------------------------------------
for x := 0 to 2 do bilder[x].free;
end;
type
BmpRcd = record
x, y: integer;
name: string[64];
Bild: TBitmap;
end;
const
dateiname = 'c:\TestBitmapRecord.str';
var
RcdBilder: array[0..2] of BmpRcd;
tfs: TFilestream;
procedure TForm1.FormCreate(Sender: TObject);
var x: integer;
begin
for x := 0 to 2 do RcdBilder[x].bild := TBitmap.create;
RcdBilder[0].bild.loadfromfile('d:\Bilder\corel033.bmp');
RcdBilder[0].name := 'Bild_33/Test';
RcdBilder[0].x := 0;
RcdBilder[0].y := 0;
RcdBilder[1].bild.loadfromfile('d:\Bilder\corel043.bmp');
RcdBilder[1].name := 'Bild_43/zweiter Test';
RcdBilder[1].x := RcdBilder[0].bild.width;
RcdBilder[1].y := 0;
RcdBilder[2].bild.loadfromfile('d:\Bilder\corel044.bmp');
RcdBilder[2].name := 'Bild_44/letzter Versuch';
RcdBilder[2].x := 0;
RcdBilder[2].y := RcdBilder[0].bild.height;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var x: integer;
begin
for x := 0 to 2 do RcdBilder[x].bild.free;
end;
// speichern
procedure TForm1.Button5Click(Sender: TObject);
var x: integer;
begin
tfs := TFilestream.create(dateiname, fmcreate);
for x := 0 to 2 do begin
RcdBilder[x].bild.savetostream(tfs);
tfs.writebuffer(RcdBilder[x].name, sizeof(RcdBilder[x].name));
tfs.writebuffer(RcdBilder[x].x, sizeof(RcdBilder[x].x));
tfs.writebuffer(RcdBilder[x].y, sizeof(RcdBilder[x].y));
end;
tfs.free;
end;
// laden
procedure TForm1.Button6Click(Sender: TObject);
var x: integer;
begin
tfs := TFilestream.create(dateiname, fmopenread);
for x := 0 to 2 do begin
RcdBilder[x].bild.loadfromstream(tfs);
tfs.readbuffer(RcdBilder[x].name, sizeof(RcdBilder[x].name));
tfs.readbuffer(RcdBilder[x].x, sizeof(RcdBilder[x].x));
tfs.readbuffer(RcdBilder[x].y, sizeof(RcdBilder[x].y));
end;
tfs.free;
// --- Bilder beispielsweise auf Form1 zeichnen ---
canvas.brush.style := bsclear;
canvas.font.color := clyellow;
for x := 0 to 2 do begin
canvas.draw(RcdBilder[x].x, RcdBilder[x].y, RcdBilder[x].bild);
canvas.textout(RcdBilder[x].x, RcdBilder[x].y, RcdBilder[x].name);
end;
//--------------------------------------------------
end;
|
Zugriffe seit 6.9.2001 auf Delphi-Ecke





