Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zugriff auf Array of Bitmap
Tony-S - Sa 26.06.10 21:49
Titel: Zugriff auf Array of Bitmap
Hallo Forum ich weiße einem Bitmap-Array verschiedene Bildschirminhalte zu und möchte über einen Klick auf eine ListBox mir die unterschiedlichen Ausschnitte anzeigen:
Delphi-Quelltext
1:
| var frames: array [0..10000] of tbitmap; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TfrmCounter.Timer2Timer(Sender: TObject); var i: integer; begin begin frames[counter] := tbitmap.create;
frmIMG.ListBox1.Items.Add(IntToStr(counter)); try ScreenShot(DesktopBitmap); finally DesktopBitmap.FreeImage;
lBitmap.canvas.draw(-min(X1,y1),-min(x2,y2),desktopbitmap); frames[counter].assign (lBitmap); inc (counter); end; if counter = 10 then begin timer2.enabled := false; counter := 0; frmIMG.Show; end; end; end; |
wenn ich dann auf frmIMG folgendes versuche:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TfrmIMG.ListBox1Click(Sender: TObject); var i: Integer; begin for i:=0 to high(frames)-1 do image1.picture.bitmap.assign (frames[i]); end; |
bekomm ich garnichts angezeigt, das Bild bleibt leer,
wenn ich mir direkt eins raussuche ungefähr so:
Delphi-Quelltext
1:
| frmIMG.image1.picture.bitmap.assign(frames[5]); |
klappt das aber. Was mach ich denn falsch? Muss ich das anders als über eine Schleife lösen?
Vielen Dank schon mal für eure Tips :).
jaenicke - Sa 26.06.10 22:37
Ich sehe ohnehin keinen Sinn darin in der Schleife nacheinander die Bilder zuzuweisen ohne diese überhaupt anzuzeigen. :nixweiss:
Denn solange deine Schleife läuft passiert ja nix anderes in deinem Programm, auch kein Zeichnen.
Tony-S - Sa 26.06.10 22:39
Sorry aber, ich hab überhaupt keine Ahnung, was du mir damit sagen möchtest.
elundril - Sa 26.06.10 22:52
Das durch die schleife das bild nie gezeichnet wird, weil das Programm dazu keine Zeit hat. ;)
Tony-S - Sa 26.06.10 22:58
Ah achso okay, macht Sinn :D naja dann wohl so:
Delphi-Quelltext
1:
| Image1.Picture.Bitmap.Assign(frames[ListBox1.itemindex]); |
elundril - Sa 26.06.10 23:03
Solange du es in der Schleife ausführst wird es nix ändern welche Integer-Variable du verwendest.
jaenicke - Sa 26.06.10 23:03
Und ganz wichtig ist noch zu prüfen ob der ItemIndex auch einen gültigen Wert hat. ;-)
Delphi-Quelltext
1: 2:
| if ListBox1.ItemIndex >= 0 then ... |
Tony-S - Sa 26.06.10 23:14
Jo.. danke :D, manchmal hab ich wohl n Brett vorm Kopf ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!