Frage

Ich muss eine Klasse namens "Triangleshape" machen, die Java.awt.shape implimentiert. Nun sollte eine andere Klasse "TrianGlecomponent" ein Objekt der Triangleshape-Klasse haben, und es sollte ein Dreieck mit der gegebenen Seitenlänge ziehen.

Ich habe es geschafft, es zu erstellen, aber ich habe gelesen, dass das Dreieck auf folgende Weise gezeichnet werden sollte: generasacodicetagpre.

Im Folgenden ist der Code, den ich erstellt habe, aber es verwendet Line2D, um ein Dreieck zu erstellen. Es ist die Triangleshape-Klasse, davon aus, dass ich alle Methoden der Formklasse impliziert habe. generasacodicetagpre.

und die TrianGlecomponent-Klasse: generasacodicetagpre. 0Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

nach dem javaDoc der Grafik2d Klassenformen werden nach dem folgenden Prinzip gerendert:

Formoperationen

    .
  1. Wenn die Operation ein Zeichnungs-Betrieb (Form) ist, wird die CreateReReDshape-Methode auf dem aktuellen Hubattribut im Graphics2d-Kontext verwendet, um ein neues Formobjekt aufzubauen, das den Umriss der angegebenen Form enthält.

  2. Die Form wird von dem Benutzerraum mit der aktuellen Transformation im Kontext von Graphics2d aus dem Benutzer-Raum umgewandelt.

  3. Der Umriss der Form wird unter Verwendung des Getpathiterator-Verfahrens extrahiert, das ein Pathiterator-Objekt zurückgibt, das entlang der Begrenzung der Form itertiert.

  4. Wenn das Graphics2D-Objekt die gekrümmten Segmente nicht verarbeiten kann, die das Mineralobjekt zurückgibt, kann er das alternative Getpathiterator-Formular aufrufen, das die Form abflacht.

  5. Die aktuelle Farbe im Graphics2D-Kontext wird für einen PaintContext abgefragt, der die Farben angibt, um im Gerätebereich zu rendern.

    kürzlich bedeutet dies, dass der graphics2d.draw (form) -Methode nennt Ihr TrainglesHape.getpatiter (AffinErtransform) -Methode und verwenden Sie die zurückgegebene ideal Objekt, um zu finden, um Linien zwischeneinander zu zeichnen.

    Als solches werden Sie wahrscheinlich benötigt, um Ihre eigene Implementierung Ihrer eigenen Pathiterator-Implementierung umzusetzen, die Ihrer Triangleshape-Implementierung entspricht.

    Die obige Lösung kann jedoch komplexer sein, dann muss er sein. Eine Alternative wäre, in den path2d Klasse, mit der Sie leichtere Formen mit einfachen Vorgängen wie Lineto (X, Y) problemlos angeben können. Da diese Klasse die Formschnittstelle implementiert, könnten Sie Ihrer Triangleshape-Klasse diese Klasse verlängern oder nur delegieren. Hier ist ein Beispiel für die Verwendung der Generalpath-Klasse, die auf ähnliche Weise wie path2d arbeitet: http://www.rosedia.net/java/example /java/swing/graphics2d/general-path.shtml

    Es hängt jedoch von Ihrer besonderen Aufgabe ab, ob dies eine akzeptable Lösung wäre oder nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top