Vektorgrafik in JPanel

frostbyte

Aktives Mitglied
Hallo,

ich arbeite gerade an einem Spiel (momentan 2D), in dem ich gerne Vektorgrafik benutzen würde, da man wild hinein und heraus zoomen kann, wahrscheinlich gut um den Faktor 1000 bis 10.000, da sind Pixelgrafiken nicht wirklich hilfreich.

SVG würde sich anbieten, da man dann alle Models mit Inkscape erstellen kann.

Die Welt selbst würde ich auch gerne als SVG erstellen, falls das möglich ist.

Bis jetzt habe ich alles in einem JPanel mit überschriebener paintComponent(Graphics g) Methode angezeigt. Vorher wird noch alles durch eine AffineTransform gejagt. Wie bekomme ich jetzt dort die SVG rein?

Batik habe ich gefunden, das sieht allerdings nach etwas zu viel aus für meinen Zweck.

Kann man auch irgendwie abfragen, ob die SVG-Figuren und die SVG-Karte gegeneinander stoßen würden?


Grüße,

frostbyte
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Anmerkung: SVG ist kein Zauberkasten, wenn man dort zoom, wird schlicht aktuell neugezeichnet,

ob du nun in SVG-Format "linie von 3,4 nach 7,6" schreibst und irgendein Tool das passend malt
oder du selber ein Koordinatensystem verwaltest und dort drawLine(3,4,7,6) malst, macht fast keinen Unterschied,
man kann den Bildschirm nur Pixel für Pixel malen, anders gehts gar nicht, höchstens noch Spielereien wie Antialiasing,

du hättest in deinen eigenen System allein noch die Arbeit, den Zoom bei dir einzubauen,
also auszurechnen, dass Welt-Koordinate 3,4 bei aktuellen Zoom und aktuellen Bildausschnitt Pixelkoordinate 520, 419 bedeutet
fast zu schade so ein schickes eigenes Mal-System an externe Tools auszulagern

> Kann man auch irgendwie abfragen, ob die SVG-Figuren und die SVG-Karte gegeneinander stoßen würden?

schon der erste Grund, lieber zu Hause zu bleiben ;) , für mich jedenfalls, im eigenen System kannst du alles rechnen,
natürlich gibts vielleicht schöne Tools, die vieles bieten,

aber auch eine Mischform ist gewiss möglich, alle Daten in der eigenen Welt modellieren, dort Kollisition usw. ausrechnen,
und nur vor dem Malen nach SVG transformieren so wie man vor dem Malen Pixelkooridinaten ausrechnen müsste

--------

wenn du Grafiken abspeicherst, für externe Bildprogramme oder PDF, die Zoomen, ja dann ist SVG ganz stark,
denn externe Programme können diese gut zoomen, ein Jpeg dagegen verpixelt, aber bei paintComponent()..
 

frostbyte

Aktives Mitglied
Gut, dann werde ich die Models in SVG designen, diese dann rastern (inkscape, imagemagick, irgendwas derartiges) und dann im Spiel benutzen. Ist dann noch ein brauchbarer Kompromiss.

Das Übersetzen zwischen Spiel und Bildschirmkoordinaten macht die AffineTransform super, das ist also schon gedeckt.

Für die Welt lasse ich mir noch etwas einfallen, vielleicht erzeuge ich die einfach als Line2D[], so kann ich Kollisionen einfach machen.
 

Guybrush Threepwood

Top Contributor
Vielleicht ist das folgende etwas für Dich, wenn Du keine Batik-Abhängigkeiten möchtest. Die Bibliothek svg2java - Project Hosting on Google Code übersetzt SVG in Java-Code, ähnlich wie es beispielsweise auch bei Flash gemacht wird. Die Grafiken werden dann nicht als Bitmap, sondern mit Java2D gezeichnet. Hierdurch müssen Grafiken nicht skaliert werden und es gibt keine Qualitätsverluste.

Ich habe allerdings noch nicht damit gearbeitet und nur mal einige SVG-Icons testhalber übersetzt. Das funktionierte meistens, aber nicht immer.

P.S.: In diesem Zusammenhang recht spannend: http://idisk.mac.com/han.solo-Public/Presentations/ForgottenPowerOfSwing/ForgottenPowerOfSwing.pdf
 
Zuletzt bearbeitet:

frostbyte

Aktives Mitglied
Joa, das sieht gut aus. Allerdings bekomme ich es nicht geöffnet. Vielleicht legt sich das noch. Mit den Pixelgrafiken sieht es einfach nur gruselig aus, es wäre also schon wirklich gut, wenn ich doch Vektorgrafik in das Spiel packe.

Kann ich mit Batik denn einfach in meine Graphics2D unter Anwendung der AffineTransform malen, oder ist das schwerer?
 

frostbyte

Aktives Mitglied
Jetzt bin ich gerade über JavaFX gestolpert, das klingt doch nicht verkehrt. Vor allem da Inkscape nach JavaFX exportieren kann. Nur muss ich wohl JavaFX noch nachinstallieren, da es unter Mac OS X 10.5 wohl nicht dabei ist. Wird natürlich auch im Deployment etwas aufwändiger ...

Java:
import javafx.scene.*;
import javafx.scene.shape.*;
import javafx.scene.transform.*;
import javafx.scene.paint.*;

public class Fly extends CustomNode {
    /* create LinearGradient for linearGradient3030 */
    function linearGradient3030(): LinearGradient {
        LinearGradient {
            stops:
                [
                Stop {
                    offset: 0.00000000
                    color: Color.rgb(0x00, 0x00, 0x00, 1.00000000)
                },
                Stop {
                    offset: 1.00000000
                    color: Color.rgb(0x00, 0x00, 0x00, 0.00000000)
                },
...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JPanel wird erst im Fullscreen angezeigt Spiele- und Multimedia-Programmierung 1
P selectedItem aus einem Methodenerstellten JPanel auslesen. Spiele- und Multimedia-Programmierung 5
M JPanel mit Graphics2D Objekten mit JScrollpane Spiele- und Multimedia-Programmierung 6
K JPanel wechseln & Neu starten - SnakeSpiel Spiele- und Multimedia-Programmierung 2
A paintComponent in JPanel in JFrame Spiele- und Multimedia-Programmierung 7
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S Thread und jpanel-paintcomponent kombinierbar?? Spiele- und Multimedia-Programmierung 14
E Animiertes JPanel dynamisch wechseln Spiele- und Multimedia-Programmierung 3
W Panel/JPAnel createImage() Exception Spiele- und Multimedia-Programmierung 2
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
C 2D Sprites an die JPanel Größe (Auflösung) anpassen/skalieren Spiele- und Multimedia-Programmierung 3
E Active Rendering im FSEM auf ein JPanel? Spiele- und Multimedia-Programmierung 4
L 2D-Spiele ruckeln auf JPanel Spiele- und Multimedia-Programmierung 7
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
X JPanel dynamisch (Koordinatensystem)? Spiele- und Multimedia-Programmierung 30
M Jpanel Graphik speichern Spiele- und Multimedia-Programmierung 6
DamienX Canvas vs JPanel Spiele- und Multimedia-Programmierung 15
S Problem mit JPanel bzw p a i n t Spiele- und Multimedia-Programmierung 6
K stringWidth bei Graphics von JPanel und Printer unterschiedl Spiele- und Multimedia-Programmierung 4
R SimpleUniverse in JPanel Spiele- und Multimedia-Programmierung 4
M 1. Menüleiste wird doppelt gezeichnet 2. awt auf ein jpanel Spiele- und Multimedia-Programmierung 4
M Jpanel mit Keylistener Spiele- und Multimedia-Programmierung 6
D 2D Graphic Objekte in ein JPanel einfügen Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben