Rotieren, skalieren und verschieben auf einem JPanel
Man wünscht es sich immer wieder mal, und wenn man es "mal schnell bräuchte" macht man es meistens "mal schnell" (und schmeißt es dann weg...), deswegen habe ich mal versucht, es so zu machen, dass man es wiederverwenden kann: Ein Panel, mit dem man das gezeichnete verschieben, rotieren und skalieren kann.
Das geht an sich erstmal recht einfach (und tatsächlich ist das jetzt ziemlich genau das, was ich vor 3 Jahren mal woanders als Foren-Antwort geschrieben hatte), aber der Teufel steckt im Detail und den ganzen Freiheitsgraden, die es da gibt, und die man erstmal nicht unbedingt bedenkt.
Auch das Aktuelle ist noch nicht so weit konfigurierbar, wie man es sich (nahe liegender Weise) wünschen würde. Aber spätestens, wenn man den Wunsch hat, über die API zu bestimmen, wie schnell sich das gezeichnete bei einem Mouse-Drag denn dreht, könnte man auch sagen: Schreib dir deinen eigenen MouseMotionListener
dafür. Im Moment gibt es einige "Standard-MouseControls", die so weit ihren Zweck erfüllen sollten.
Das Ganze liegt unter https://github.com/javagl/Viewer
--Marco13 22.07.2015, 20:40