Entwickler-Ecke
Multimedia / Grafik - Canvas auf TImage laden
cyberax - Mo 12.03.07 20:44
Titel: Canvas auf TImage laden
Hallo,
ich habe zwei Probleme mit dem Image die aber miteinander zu tun haben.
Ich habe eine Datei mit Koordinaten die als Canvas auf ein Image übertragen werden sollen.
Ich mach das so...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| ... xv:=ini.ReadInteger(inttostr(z),'XV',xv); yv:=ini.ReadInteger(inttostr(z),'YV',yv); xb:=ini.ReadInteger(inttostr(z),'XB',xb); yb:=ini.ReadInteger(inttostr(z),'YB',yb); bild_fenster.Canvas.Rectangle(xv,yv,xb,yb); ... |
(Anbei - sollte ich "bild_fenster.IMAGE1.canvas...." verwenden, oder so wie ich's habe??)
Wenn nun das Fenster gezeigt wird / den Focus erhält ist leider nichts zu sehen ...?!? :roll:
Genau so wenn ich ein Canvas direkt (mit Maus ziehen...) zeichne und dann ein anderes Fenster aufrufe verschwindet das Canvas wieder...
habe schon im Forum gesucht aber leider nix passendes gefunden...
Habt ihr einen Link zur Hilfe oder direkt nen Tip ??
Danke schonmal
Gruß cyberax
Kroko - Mo 12.03.07 20:47
Titel: Re: Canvas auf TImage laden
cyberax hat folgendes geschrieben: |
...
Wenn nun das Fenster gezeigt wird / den Focus erhält ist leider nichts zu sehen ...?!? :roll: |
steckt das mal ins onPaint-Ereignis der form
cyberax hat folgendes geschrieben: |
Genau so wenn ich ein Canvas direkt (mit Maus ziehen...) zeichne und dann ein anderes Fenster aufrufe verschwindet das Canvas wieder...
habe schon im Forum gesucht aber leider nix passendes gefunden...
Habt ihr einen Link zur Hilfe oder direkt nen Tip ??
Danke schonmal
Gruß cyberax |
genauso, merken und im OnPaint-Ereignis der Form wieder ausgeben!
oder gleich alles in einem Image machen!
cyberax - Mo 12.03.07 21:05
Also wenn ich habe das mal ins Onpaint Ereignis gesteckt - funktioniert genau so wenig...
und wenn ich...bild_fenster.image1.Canvas.rectangle(xv,yv,xb,yb)
verwende kommt "Ein Bild kann nur geändert werden, wenn es ein Bitmap enthält.".
Hmmmm...?!?
Kroko - Mo 12.03.07 21:10
(a) sollte funktionieren, mal überprüft ob Koodinaten und Farbe des rechtecks plausible und sichtbar sind
(b) Image1.Picture.Bitmap := TBitmap.Create und Breite und Höhe setzen
cyberax - Mo 12.03.07 21:21
(a) ich zeichne mit dem Programm die Rechtecke und speichere sie in eine Datei. Dabei sind sie sichtbar und die Koordinaten sind auch i.O. Habe:
Delphi-Quelltext
1: 2:
| canvas.Pen.mode:=pmnotxor; canvas.pen.style:=psdash; |
Das wird bei form.create eingestellt.
(b) Versteh ich nicht ganz. Vieleicht ein kurzer Code dazu ??
JayEff - Mo 12.03.07 21:37
cyberax hat folgendes geschrieben: |
| (b) Versteh ich nicht ganz. Vieleicht ein kurzer Code dazu ?? |
Naja,
Kroko hat folgendes geschrieben: |
| Image1.Picture.Bitmap := TBitmap.Create |
und Breite (width) und Höhe (height) setzen ( :=wert; ) :gruebel:
cyberax - Mo 12.03.07 21:51
Also...
Delphi-Quelltext
1: 2: 3:
| image1.Picture.Bitmap:=tbitmap.create; image1.Picture.Bitmap.Width:=xb-xv; image1.Picture.Bitmap.Height:=yb-yv; |
kann ja wohl nicht richtig sein, oder??
Ich lade erst mit Picture.loadfromfile das Bild und erstelle dann auf dem Image ein Bitmap mit der Höhe und Breit. Okay - aber 1. "verschwindet" dann mein geladenes Bild wieder und zweitens - wie definiere ich die startkorrdinaten des Bildes??
Sicher ist das mit dem Bitmap ganz anders gemeint, aber dass hatte ich nicht verstanden. Deswegen nochmal die Frage....
JayEff - Mo 12.03.07 22:22
cyberax hat folgendes geschrieben: |
Also...
Delphi-Quelltext 1: 2: 3:
| image1.Picture.Bitmap:=tbitmap.create; image1.Picture.Bitmap.Width:=xb-xv; image1.Picture.Bitmap.Height:=yb-yv; | kann ja wohl nicht richtig sein, oder?? |
...doch... :gruebel:
cyberax hat folgendes geschrieben: |
Ich lade erst mit Picture.loadfromfile das Bild und erstelle dann auf dem Image ein Bitmap mit der Höhe und Breit. Okay - aber 1. "verschwindet" dann mein geladenes Bild wieder |
Logisch, du erstellst die Bitmap NACHDEM du das Bild geladen hast, ÜBERSCHREIBST das Bild also. Einfach die Bitmap vor dem Laden erstellen.
cyberax hat folgendes geschrieben: |
| und zweitens - wie definiere ich die startkorrdinaten des Bildes?? |
Startkoordinaten...? :gruebel: versteh ich nicht ganz...
cyberax - Mo 12.03.07 22:42
Naja - wenn ich das von Kroko richtig verstanden haben, soll ich statt ein Rectangle zu zeichnen ein Bitmap mit den Koordinaten (die ich aus der Datei lade) erstellen.
Ich kann dich Breite und die Höhe angeben. aber nicht left und top (x,y)...
Ich glaube mein fehler liegt woanders. Oder es liegt ein Verständnisproblem vor...
ich häng mal die Datei an...wie ich sie orig. hatte. Habe also die Versuche mit den Änderungen wieder entfernt
JayEff - Mo 12.03.07 22:47
Du musst die Bitmap erstellen, bevor du darauf zeichnen kannst! Also erst Bitmap := TBitmap.Create; aufrufen, und dann die Höhe und Breite festlegen. DANACH drauf zeichnen.
cyberax - Mo 12.03.07 23:08
Okay....
soweit so gut... aber ich möchte doch auch JPG's laden können und nicht nur BMP ?!?
JayEff - Mo 12.03.07 23:13
Das hat nichts mit der ersten Frage zu tun, darum: Neue Frage - Neuer Thread, bitte! :mahn: Das hat den Sinn, dass ein Suchender nicht lauter "Ich hab 6 Fragen:" und "537 Probleme, bitte helft!" Themen findet ;)
Ausserdem, etwas suchen, und du hättest gefunden: die Unit "jpeg" einbinden.
cyberax - Mo 12.03.07 23:21
Ich habe diese unit eingebunden!!! Das sollte auch nicht die Frage sein.
Mein Problem (jetzt!) ist auch nicht, dass ich keine JPG laden kann, sondern dass das dann nicht mehr funktioniert wenn ich TBitmap verwende.
Also erst hat JPG laden funktioniert (dafür das mit dem Canvas, Rectangle nicht) - nun funktioniert das Zeichnen der Canvas , aber dafür das Verwenden/Laden von .JPG nicht mehr.
Deswegen das
| Zitat: |
| aber ich möchte doch auch JPG's laden können und nicht nur BMP ?!? |
Verstehst, was ich mein ?? :?
cyberax - Mo 12.03.07 23:48
Okay...
hier die Lösung...
Delphi-Quelltext
1: 2: 3:
| Jpeg := TJpegImage.Create; jpeg.LoadFromFile(s); bild_fenster.image1.Picture.Bitmap.Assign(jpeg); |
Danke für eure Hilfe!!!
Gruß Cyberax
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!