das kann ich mir alles gut vorstellen, aber irgendwie noch nicht das, was ich 
erhofft hatte.

Vielleicht probiere ich mal Thomas Vorschlag und packe alles in einzelne 
Canvas, dann hab ich schnell auch einen Selektionsrahmen und keine Probleme mit 
den Events...

Da ich immer nur eines auf einmal bewegen kann mit der Maus, gibt das auf jeden 
Fall keine Geschwindigkeitsprobleme


Gruß

Stefan

> 
> 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