How to create Graphics-Objekt zum zeichnen von Polygon?
Muss ich zeichnen Sie ein Polygon durch verbinden aufeinanderfolgender Punkte und dann verbinden Sie den letzten Punkt auf den ersten.
Mit diesem Ziel habe ich versucht zu verwenden drawPolygon(xPoints, yPoints, nPoints). Meiner Meinung nach ist es viel mehr Komfort Ansatz, um dieses Ziel zu erreichen
Aber die Graphics
Klasse ist die abstrakte Klasse und ich wir können nicht erstellen Sie eine Instanz-Objekt und rufen Sie drawPolygon()
Methode?
Code:
public void draw() {
Graphics g = null;
int xPoints [] = new int[pointsList.size()];
int yPoints [] = new int[pointsList.size()];
int nPoints = pointsList.size();
for (int i = 0; i < pointsList.size(); i++) {
xPoints [i] = (int) pointsList.get(i).getX();
yPoints [i] = (int) pointsList.get(i).getY();
}
g.drawPolygon(xPoints, yPoints, nPoints);
}
- Können wir umgehen, hat der Aufruf dieser Methode in irgendeiner Weise?
- Vielleicht existieren einige andere Wege, um dieses Ziel zu erreichen?
Aber die Klasse Graphics ist die abstrakte Klasse und ich wir können nicht erstellen Sie eine Instanz-Objekt und rufen Sie drawPolygon () - Methode? 1. legen Sie alle
Wo Sie brauchen, um es darzustellen? Der Bildschirm oder eine Datei?
auf dem Bildschirm
Objects
zu den array
, 2. verwenden Swing JComponent
oder JPanel
(überschreiben getPreferredSize
), 3. custom painting
erfolgt in paintComponent
, 4. innerhalb paintComponent
Schleife innerhalb arrays of prepared Objects
, 5 Verwendung von lokalen Variablen für die Positionierung von Objects
im JComponent
oder JPanel
Wo Sie brauchen, um es darzustellen? Der Bildschirm oder eine Datei?
auf dem Bildschirm
InformationsquelleAutor nazar_art | 2013-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich das gleiche problem hatte, dies war, wie ich es umgangen:
nun erstellen Sie einfach eine Instanz dieses und fügen Sie es zu einer von JFrame minimale Höhe und Breite von je 100. Sie können JFrame ist getWidth () - Methode zurückgeben wird, die Größe des JFrame und verwenden Sie diese, um Ihre Punkte statt (was besser ist) weil dann das Bild Rendern, bezogen auf die Größe des Rahmens selbst.
The method draw(GeneralPath) is undefined for the type Graphics
fürg.draw(polygon)
. Und hierGraphics
ist parameter derPaint
dies versuchen. es sollte funktionieren.
Sie sollten mit der Breite & height Werte der Komponenten es sich von selbst, wie es könnte Hinzugefügt werden, um ein weiteres Kind Komponente und kann unter der Kontrolle eines Layout-manager
InformationsquelleAutor ChrisMcJava
Der Grund, warum die Entwickler Grafik Abstrakt war, ein graphics-Objekt muss irgendwoher kommen. Zum Beispiel ein JPanel oder JFrame-Objekt haben Sie ein Grafik-Objekt zugeordnet, da Sie Rendern einsehbaren Bereichen auf dem Bildschirm. Ein graphics-Objekt ist in der Regel zugewiesen, mit der getGraphics () - Methode. Hier ist ein kurzes Beispiel:
InformationsquelleAutor
Malerei wird gesteuert durch die
RepaintManager
. Malen in Swing wird über eine Reihe von Methoden, die aufgerufen sind, in Ihrem Namen, wenn dieRepaintManager
entscheidet die Komponente muss aktualisieren (Sie können, natürlich, Anfrage repaints, aber dieRepaintManager
wird entschieden, Wann, was und wie viel).Verwenden, um benutzerdefinierte malen in Swing, müssen Sie überschreiben die Methoden, die aufgerufen werden, als Teil der Lack-Zyklus.
Ist es empfohlen, die Sie überschreiben
paintComponent
Können Sie aus
Weitere details.
In deinem Beispiel, Ihre
Graphics
istnull
...Graphics g = null;
dem ist nicht zu helfen...Den Punkt, wenn er mit der repaint-manager ist es, zu informieren, die OP, die Sie haben keine Kontrolle über die Farbe Prozess, es gibt einige andere system in place, und, ja, ich hoffe, Sie tun Untersuchung der repaint-manager und wie die Malerarbeiten im Gange, es wird Ihnen ein besseres Verständnis von, wie Sie davon profitieren können. Eines der Probleme, die OP ist, dass ein Mangel an Kenntnissen über die Farbe Prozess
InformationsquelleAutor MadProgrammer