Am 04.04.2011 um 09:48 schrieb Stefan Sicurella:

> Hi,
> 
> kennt jemand ein gutes Beispiel, das zeigt wie man auf einem Canvas Objekte 
> (Bilder,Schrift usw) platzieren und mit der Maus verschieben kann?

Vielleicht ging meine erste Antwort von falschen Voraussetzungen aus (= alle 
Objekte gemeinsam verschieben). Wenn du sie einzeln verschieben willst, dann 
hast du vor allem das Problem herauszufinden, auf welchem Objekt das 
MouseDown-Ereignis stattfindet.

Da würde ich so vorgehen:
1. Keine Grafik-Objekte (ausser BasisPicture) direkt in den Canvas schreiben.
2. Ein Basis-Picture definieren, in das du die Objekte wiederum als Pictures 
ausgibst.
3. Ein zum Basis-Picture identisches Picture mit weissem Hintergrund 
definieren, das du nie ausgibt (ein Dummy).
4. Durch eine Methode sicherstellen, dass du für deine Objekte einen Index hast 
(kann dadurch gewährleistet sein, dass du die Objekt-Pictures in einen Array 
aufnimmst)
5. Ins Dummy Picture ein FillRect mit der Dimension und am Ort des Objektes 
ausgeben, dessen Farbe den Index des Objektes abbildet (Basis sollte wegen 
Konflikten mit weiss und schwarz zur Sicherheit 1 sein!)
6. Bei der Mausebewegung (Down oder Drag etc.) die Farbe unter den Koordinaten 
des ausgegebenen Pictures im Dummy Picture feststellen und die Farbe in einen 
Integer zurückwandeln.
7. Der zurückgegebene Wert ist der Index des betroffenen Objektes (oder er ist 
ausserhalb!).
8. Objekt verschieben, d.h. am neuen Ort ausgeben (X,Y-Differenzen zwischen 
Down und Up (resp. Drag)).
9. Nach der Bewegung das Dummy-Bild neu aufbauen.

Das geht mit 2D wesentlich besser als mit 'normalen' Pixelbildern, weil du dich 
nicht ums Löschen kümmern musst. Dann gibst du 2D-Objekte und nicht Pictures im 
BasisPicture aus. Das Dummy-Picture muss aber PixMap sein.

Wenn du alles zusammen verschieben musst, dann kannst du übrigens einfach das 
BasisPicture verschieben.

Ähnliches habe ich schon gemacht. Du kannst mit 2D auch sehr leicht skalieren. 
Nur beim Drehen wäre ich vorsichtig (kann langsam sein und kann Texte holprig 
machen (jedenfalls wenn man die Buchstaben einzeln behandelt, was ich aus 
bestimmten Gründen musste). Grundlinie wird dann sehr unschön.).

MfG Karl

> Gruß
> 
> Stefan
> 


Antwort per Email an