Ich bin neu in der Grafikprogrammierung. Ich versuche ein Programm zu erstellen, mit dem Sie gerichtete Graphen zeichnen können. Für den Anfang habe ich es geschafft, eine Reihe von Rechtecken zu zeichnen (die die Knoten repräsentieren) und habe Schwenk- und Zoomfähigkeiten durch Überschreiben der Paint-Methode in Java gemacht.Zeichnen eines Punktrasters
Dies scheint alles recht gut zu funktionieren, während es nicht zu viele Knoten gibt. Mein Problem ist, wenn es darum geht, ein Punktraster zu zeichnen. Ich benutzen ein einfaches Stück Testcode auf dem ersten, die einen Punktraster mit zwei verschachtelten for-Schleifen überschichtet:
int iPanX = (int) panX;
int iPanY = (int) panY;
int a = this.figure.getWidth() - iPanX;
int b = this.figure.getHeight() - (int) iPanY;
for (int i = -iPanX; i < a; i += 10) {
for (int j = -iPanY; j < b; j += 10) {
g.drawLine(i, j, i, j);
}
}
Dies ermöglicht es mir, um das Raster zu schwenken, aber nicht vergrößern oder verkleinern. Allerdings ist die Leistung beim Panning schrecklich! Ich habe viel gesucht, aber ich glaube, dass ich etwas Offensichtliches vermissen muss, weil ich nichts zu dem Thema finden kann.
Jede Hilfe oder Hinweise würden sehr geschätzt werden.
--Stephen
Danke, Leistung hat massiv zugenommen! Es gibt ein paar Macken, die ich ausbügeln muss, aber insgesamt ist es viel besser. Die Lösung, die Sie zum Zoomen anbieten, ist nicht ideal, da dies die Größe des Rasters erhöht, das ich lieber als einzelne Pixel behalten würde. Aktualisiere ich das Raster img auf einem Zoom zu empfangen? – SRoe
Ja, das ist mir später eingefallen. Es hängt davon ab, wie oft Sie erwarten, dass sich der Zoom ändert. Ich denke, du solltest das Rasterbild bei jedem Zoomwechsel aktualisieren. Und in Farbe (g) können Sie das Raster mit einem 1: 1-Zoom zeichnen und dann den Skalierungsfaktor für den Rest der zu malen Objekte einstellen. Ich denke, ich werde das in meiner Antwort aktualisieren. – Stroboskop