Entwickler-Ecke
Sonstiges (Delphi) - Hilfe bei Einfügen eines Bildes
shr00m - So 07.01.07 18:36
Titel: Hilfe bei Einfügen eines Bildes
Wie füge Ich ein Bild (.bmp) während einem Prozess, auf eine ganz bestimmten Stelle der Benutzeroberfläche ein...
Aufgabe: Schreibe ein Programm, das Dezimalzahlen in Hexadezimalzahlen umrechnet. Verwende dabei eine eigene
grafische Darstellung der Symbole (0-F)
bis jetz sieht es noch so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.ButtonOKClick(Sender: TObject); var B,C:integer; begin C:= strtoint (editDZ.text); repeat B:= C mod 20 ; C:= C div 20 ; ListboxCode.Items.Add(floattostr (B)) until C=0; end; |
Das Problem ist jetz bei jedem Durchlauf die Grafik an eine bestimmte Stelle zu kopieren; Ich würde es ja so lösen (im Verbalen Gebrauch):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| repeat x:=x+1 B:= C mod 20 ; C:= C div 20 ; Bild einfügen [x,y] until C=0; |
aber so eine ähnliche Fkt. habe ich leider nicht gefunden, kann mir da wer helfen?
P.S. Ich beschäftige mich noch nicht lange mit Delphi, und bitte um Verständnis ^^
Moderiert von
Gausi: I- durch Delphi-Tags ersetzt
rizor - So 07.01.07 19:00
Wie sollst du denn 0 bis F graphisch darstellen.
Ich kann mir das nicht so richtig vorstellen.
Aber wenn du ein Bitmap einfügen willst, kannst du einfach ein Timage benutzen.
Ich glaub nicht, dass dir das geholfen hat, oder?
Leuchtturm - So 07.01.07 19:04
probiers mal mit Canvas
shr00m - So 07.01.07 19:49
rizor hat folgendes geschrieben: |
Wie sollst du denn 0 bis F graphisch darstellen.
Ich kann mir das nicht so richtig vorstellen. |
Naja, halt ein 0-F in künstlerischer Form, von mir aus auch was anderes halt nen Smile für 0 eine Giraffe für 1, usw. (damit man sichs besser vortstellen kann^^)
Kann man über die Canvas-fkt. statt Zeichen auch (kleine) Bilder einfügen?
Aber soweit hat mir das schonmal geholfen, zumindest bin Ich jetz soweit das es 0-F anzeigt(als Zeichen), wenn auch nicht in der richtigen Reihenfolge, oder da wo ich will... aber das wird hoffentlich noch ^^
rizor - So 07.01.07 20:47
Na du brauchst dann einfach 15 grafiken und die fragst du dann einfach mit case ab und gibst die entsprechende Grafik in einem TImage wieder.
shr00m - Mo 08.01.07 20:48
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| procedure TForm1.ButtonOKClick(Sender: TObject); var B,C:integer; begin C:= strtoint (editDZ.text); repeat B:= C mod 16 ; C:= C div 16 ; ListboxCode.Items.Add(floattostr (B)); case B of 0: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(0,image2.Picture.Bitmap) end; 1: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(1,image2.Picture.Bitmap);end; 2: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(2,image2.Picture.Bitmap); end; 3: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(3,image2.Picture.Bitmap);end; 4: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(4,image2.Picture.Bitmap);end; 5: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(5,image2.Picture.Bitmap);end; 6: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(6,image2.Picture.Bitmap);end; 7: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(7,image2.Picture.Bitmap)end; 8: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(8,image2.Picture.Bitmap)end; 9: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(9,image2.Picture.Bitmap)end; 10: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(10,image2.Picture.Bitmap)end; 11: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(11,image2.Picture.Bitmap)end; 12: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(12,image2.Picture.Bitmap)end; 13: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(13,image2.Picture.Bitmap)end; 14: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(14,image2.Picture.Bitmap)end; 15: begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(15,image2.Picture.Bitmap)end;
end;
until C=0;
end; |
Problem1:Ich habs jetz so gelöst, kriegt man die Bilder auch noch größer, man sieht zwar die Grafiken, jedoch in einem winzigen Format... :(
Problem2: Wie krieg ich die Sprünge hin, damit beim nächsten Durchgang aus Image2->Image3->Image4... wird?
Moderiert von
raziel: Delphi-Tags hinzugefügt
evilsoft.de - Mo 08.01.07 20:57
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.ButtonOKClick(Sender: TObject); var B,C:integer; begin C:= strtoint (editDZ.text); repeat B:= C mod 16 ; C:= C div 16 ; ListboxCode.Items.Add(floattostr (B)); if B in [0..15] then begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(B,image2.Picture.Bitmap); end; until C=0; end; |
ist es so nicht besser O.o ?!
Edit: vergesst es^^
Narses - Mo 08.01.07 21:04
Moin!
shr00m hat folgendes geschrieben: |
| Problem1:Ich habs jetz so gelöst, kriegt man die Bilder auch noch größer, man sieht zwar die Grafiken, jedoch in einem winzigen Format... :( |
Mach halt die Images größer. ;)
shr00m hat folgendes geschrieben: |
| Problem2: Wie krieg ich die Sprünge hin, damit beim nächsten Durchgang aus Image2->Image3->Image4... wird? |
Leg dir ein Array of TImage an, in dem du Referenzen auf die Image-Komponenten ablegst (z.B. im FormCreate), dann kannst du in einer weiteren Schleife drum rum über das Array jeweils ein Image weiter befüllen.
Du brauchst übrigens nicht erst das Image durch .Assign(NIL) zu leeren, wenn du mit .GetBitmap() was zuweist, wird der Inhalt sowieso rausgeworfen. ;)
cu
Narses
shr00m - Mo 08.01.07 21:22
evilsoft.de hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.ButtonOKClick(Sender: TObject); var B,C:integer; begin C:= strtoint (editDZ.text); repeat B:= C mod 16 ; C:= C div 16 ; ListboxCode.Items.Add(floattostr (B)); if B in [0..15] then begin image2.Picture.Bitmap.Assign(nil); imagelist1.GetBitmap(B,image2.Picture.Bitmap); end; until C=0; end; |
ist es so nicht besser O.o ?!
Edit: vergesst es^^ |
Uups, du hast Recht... Naja, man kann sichs ja auch kompliziert machen :mrgreen:
Dann siehts zumindest professioneller aus zumindest für die noobs xD
Narses hat folgendes geschrieben: |
| Mach halt die Images größer. |
Das hatte Ich in der Zwischenzeit auch schon hingekriegt... aber thx
Narses hat folgendes geschrieben: |
| Leg dir ein Array of TImage an, in dem du Referenzen auf die Image-Komponenten ablegst (z.B. im FormCreate), dann kannst du in einer weiteren Schleife drum rum über das Array jeweils ein Image weiter befüllen. |
Mal schaun, ob ich das noch hinkrieg, wenn nich, wende ich mich nochmal an euch, sofern ihr bereit dazu seid :D
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!