// 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