PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2DGraphics objecte verschieben


raptor666
07.04.2003, 08:46
hi all,
ich moechte in einem JFrame eine grafik darstellen (z.b. eine parabel)
und diese dann auswerten. dazu habe ich mir vorgestellt eine vertikale
linie in die grafik zu zeichnen und diese dann mit der maus zu verschieben
und abhaengig von der position der vertikalen linie auf der x-achse der
grafik die y-werte der grafik anzuzeigen.
nur leider hab ich keine ahnung wie ich es anstelle ein grafik-objekt
(vertikale linie) mit der maus zu positionieren. ich kann mir zwar
vorstellen, dass ich die mausposition auslese und dann pruefe ob die
auf der linie liegt (oder evtl x-pixel r/l davon um nen groesseren fokus
zu bekommen), aber wie gehts dann weiter? die linie auf ner neuen position
zu zeichnen is zwar auch kein problem, was aber passiert mit der 'alten'?
wird dann ueblicherweise die ganze grafik neu gezeichnet oder geht es,
dass nur ein teilbereich (da wo die linie vorher war) neu gezeichnet wird?
oder bin ich total aufm holzweg und es gibt ne ganz simple loesung fuer
das problem?
waere super wenn ihr mir da weiterhelfen koenntet.

thx schon mal ...


pate33
07.04.2003, 10:32
Hi,

bei den Java WebStart Demos (http://java.sun.com/products/javawebstart/demos.html) gibt es ne Sample Draw Application ... nach deiner beschreibung wird dort genau das gemacht, was du brauchst ...

schau mal bei sun, ob es irgendwo den source dafuer gibt. ;)

DarkTom
09.04.2003, 05:42
Du könntest, anstatt selbst zu malen, mit 2D-Objekten arbeiten, z.B. java.awt.geom.Line2D.Double für einfach Linien. Diese lassen sich prima in einem java.awt.geom.GeneralPath zusammenfassen. Mit diesem kannst du auch prima eine Parabel oder sonstige Funktion darstellen. Die genannten Objekte (wie auch noch einige andere) implementieren alle Shape und kennen selbst ihre Koordinaten. Sie lassen sich dann innerhalb der paint-Methode einfach mit deinGraphikkontext.draw(Shape) zeichnen. Um sie zu bewegen müsstest du also nur ihre Koordinaten ändern und dann repaint() aufrufen.
Wenn du praktisch die ganze Oberfläche ändern willst, z.B. in x-Richtung strecken oder alles verschieben, dann solltest du dir die Klasse java.awt.geom.AffineTransform angucken. Damit bewegst du dann weniger deine Objekte, sondern dein Koordinatensystem.

raptor666
09.04.2003, 17:05
@-leliel-
danke fuer den link. leider hab ich kein web-start installiert und
kann das sample auch nicht oeffnen.

@DarkTom
danke fuer die ausfuehrliche antwort. werd mich wohl erstmal ein
bisschen mit graphics2D beschaeftigen bevor ich ans werk gehe.
aber wenigstens scheint mir das die richtige richtung zu sein.

gr33tz