Moin movax,
TBitmaps haben die unangehme Eigenschaft, dass man erst einmal ihre Grösse setzen muss, bevor man sie erfolgreich füllen kann.
Das müsste dann ungefähr so aussehen.
Code:
[b]procedure[/b] TForm1.Button1Click(Sender: TObject);
[b]var[/b]
bild: tbitmap;
[b]begin[/b]
bild := tbitmap.Create;
[b]try[/b]
bild.Height := Tiles.Height;
bild.Width := Tiles.Width;
Tiles.GetBitmap(0, bild);
Image1.Canvas.Draw(0, 0, bild);
[b]finally[/b]
FreeAndNil(bild);
[b]end[/b];
[b]end[/b];
Ausserdem hab' ich das Objekt auch wieder freigegeben.
Da durch das Erzeugen eines Objektes Resourcen belegt werden, müssen diese auch, nach Gebrauch, wieder freigegeben werden, um Speicherlecks zu vermeiden.
Dazu dient der try/finally Block. (sogenannter Resourcenschutzblock).
Würde zwischen try und finally irgendetwas schiefgehen (
Exception), würde finally in jedem Falle ausgeführt werden (hoffentlich
), und somit die durch TBitmap.Create belegten Resourcen wieder freigegeben.