| Autor |
Beitrag |
shr00m
      
Beiträge: 18
WIN 95, XP Home, Vista HP; Ubuntu 7.10; openSUSE 10.3
D3 Prof., D6 P, D2005 P, C++, VB6
|
Verfasst: So 07.01.07 18:36
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
      
Beiträge: 209
WIN XP
Delphi 2005 PE, Visual C++
|
Verfasst: 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
      
Beiträge: 1087
Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
|
Verfasst: So 07.01.07 19:04
probiers mal mit Canvas
_________________ Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
|
|
shr00m 
      
Beiträge: 18
WIN 95, XP Home, Vista HP; Ubuntu 7.10; openSUSE 10.3
D3 Prof., D6 P, D2005 P, C++, VB6
|
Verfasst: 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
      
Beiträge: 209
WIN XP
Delphi 2005 PE, Visual C++
|
Verfasst: 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 
      
Beiträge: 18
WIN 95, XP Home, Vista HP; Ubuntu 7.10; openSUSE 10.3
D3 Prof., D6 P, D2005 P, C++, VB6
|
Verfasst: Mo 08.01.07 20:48
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
      
Beiträge: 39
XP
Delphi 7
|
Verfasst: 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
      

Beiträge: 10184
Erhaltene Danke: 1259
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
shr00m 
      
Beiträge: 18
WIN 95, XP Home, Vista HP; Ubuntu 7.10; openSUSE 10.3
D3 Prof., D6 P, D2005 P, C++, VB6
|
Verfasst: 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
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 
|
|
|