Entwickler-Ecke

Multimedia / Grafik - Vector Grafik über Bitmap zeichen


Quake User - Sa 08.01.11 03:08
Titel: Vector Grafik über Bitmap zeichen
Welche Komponeten verwende ich am besten um auf ein Bitmap (png) Vector Grafiken zu zeichnen? (wmf, svg, eps o.ä.)?


Quake User - Sa 08.01.11 19:56

Niemand eine Idee?


Bergmann89 - Sa 08.01.11 20:12

Hey,

ich kenn keine Komponente, abner zur not kannt du dir das ja auch selber schreiben, bzw die Vektorgrafiken in ein BMP umkodieren. zu den einzellnen Formaten findet man bestimmt bei gogle irgendwas zum Aufbau so ner Datei. Dann muss man die Sachen nur noch richtig rauslesen un dann auf die Bitmap zeichnen.

MfG Bergmann.


jaenicke - Sa 08.01.11 21:11

Delphi selbst kann doch Vektorgrafiken lesen. Also einfach in TPicture laden oder direkt ein TMetafile dafür benutzen. Dieses Bild kannst du wiederum mit TBitmap.Canvas.Draw direkt auf ein TBitmap zeichnen.


Quake User - So 09.01.11 18:30

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Delphi selbst kann doch Vektorgrafiken lesen. Also einfach in TPicture laden oder direkt ein TMetafile dafür benutzen. Dieses Bild kannst du wiederum mit TBitmap.Canvas.Draw direkt auf ein TBitmap zeichnen.


Also: ich verwende derzeit ein Image. In dieses lade ic hden Hintergrund. Nun kann ich auf das Canvas des Image bspw. mit "Ellipse" Kreise zeichnen.
Image1.Canvas.Ellipse (x-2,y-2,x+2,y+2);

Ich suche noch eine Möglichkeit, auch andere Bilder (Vektor Grafiken) an bestimmten Positionen des Image zu zeichnen.


jaenicke - So 09.01.11 19:28

user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
Ich suche noch eine Möglichkeit, auch andere Bilder (Vektor Grafiken) an bestimmten Positionen des Image zu zeichnen.
Genau das habe ich doch geschrieben. :gruebel:

Wobei du eben zum Zeichnen in diesem Fall statt TBitmap.Canvas.Draw eben Image1.Canvas.Draw benutzt.


Quake User - So 09.01.11 19:28

Das Image1.Canvas.Draw(50,50,wK) im folgenden Code löst eine Exception aus: "Ein Bild kann nur geändert werden, wenn es ein Bitmap enthällt." Das Image enthällt aber ein Bitmap!?


Delphi-Quelltext
1:
2:
3:
wK:= TMetaFile.Create;
wK.LoadFromFile(ExtractFilePath(ParamStr(0))+'wK.emf');
Image1.Canvas.Draw(50,50,wK);


Ich habe in der Hilfe folgendes gefunden:

Delphi-Quelltext
1:
Form1.Canvas.Draw(50,50,wK);                    


Das funktioniert. Ich möchte aber nicht auf die Form, sondern auf das Bitmap zeichnen (da man bspw. das Bitmap auch vergrößern oder verkleinern kann und sich dann das Gezeichnete verschiebt.) Ich benötige dabei das Image aber nur als Hintergrund.

Ich habe hier das Konzept noch nicht verstanden. Was verwendet Ihr und wie? Könnt Ihr ein Einstiegst Tutorial empfehlen?


bummi - So 09.01.11 19:54

Du hast wahrscheinlich kein Bitmap geladen sondern ein Picture, z.B. ein PNG, ICO o.ä..
Einfach in ein Dummyimage laden und in Zielbild malen mit Canvas.Draw(0,0,Dummyimage.Picture.Graphic)


Quake User - So 09.01.11 20:14

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
Du hast wahrscheinlich kein Bitmap geladen sondern ein Picture, z.B. ein PNG, ICO o.ä..
Einfach in ein Dummyimage laden und in Zielbild malen mit Canvas.Draw(0,0,Dummyimage.Picture.Graphic)

Ja, das war das Problem.

Ich suche immer noch ein Turorial. Hier mal meine Zielstellung:
- ich möchte auf ein Hintergrund Bitmap EMF Grafiken (oder andere Vektorformate) und auch Text zeichnen
- ich möchte die EMF Grafiken später noch mit der Maus verschieben können.
- ich möchte teilweise transparente Grafiken auf den Hintergrund zeichnen


jaenicke - So 09.01.11 20:32

user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
Ich suche immer noch ein Turorial.
Es gibt nicht für alles Tutorials. Wenn man immer nur etwas nachprogrammiert, bringt das ja auch wenig...

user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
- ich möchte auf ein Hintergrund Bitmap EMF Grafiken (oder andere Vektorformate) und auch Text zeichnen
Das weißt du ja jetzt wie das geht.

user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
- ich möchte die EMF Grafiken später noch mit der Maus verschieben können.
Dafür musst du dir die einzelnen Teile merken und entsprechend zeichnen. Hier bietet sich eine TPaintBox an, auf die du das alles zeichnest. Wenn der Benutzer dann mit der Maus klickt, kannst du aus deinen gespeicherten Positionsdaten der Einzelteile feststellen, auf welches der Benutzer geklickt hat.
Dann merkst du dir, dass dieses gerade ausgewählt ist. Wenn der Benutzer jetzt mit der Maus zieht, bewegst du dieses Einzelteil und zeichnest es entsprechend.

user profile iconQuake User hat folgendes geschrieben Zum zitierten Posting springen:
- ich möchte teilweise transparente Grafiken auf den Hintergrund zeichnen
Das sollte bei PNGs schon gehen, oder suchst du sowas:
http://www.delphi-forum.de/viewtopic.php?p=623497#623497


delbor - Mo 10.01.11 12:27

Hi zusammen

Delphi selbst kennt seit Urzeiten TMetaFile und TMetafileCanvas, um Vektorgrafiken zu zeichnen.
Mit TMetafileCanvas kann z.B. in eine Paintbox gezeichnet werden.

Gruss
Delbor