svg- Bild

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

ich habe auf meinem Panel ein *.svg- Bild platziert und zwar so:

Code:
             myPanel = new JSVGCanvas();                                                   
             myPanel.setLayout(null);
             myPanel.setBounds(states.elementAt(i).getxPosition(), states.elementAt(i).getyPosition(), 700, 600);
             myPanel.setBorder(states.elementAt(i).getBorder());		                              
                
           
etwas später:
File f = new File(System.getProperty("user.dir") + "\\pics\\bild.svg");                  
myPanel.setURI(f.toURL().toString());    // hier gebe ich das *.svg- Bild auf das Panel von oben


Mein Probelm ist jetzt, dass das *.svg- Bild, wennich meinen JFrame größer mache, sich auch mitverschiebt, d.h. es wird größer oder kleiner.

Was könnte ich da machen, ich möchte, dass das Bild an der linken oberen Ecke fixiert ist und wenn man den JFrame kleiner macht dann soll man eben nicht mehr das ganze Bild sehen.


Vielleicht hat da jemand eine Idee.

lg
Michl
 

MQue

Top Contributor
Hallo,


ist es möglich, auf einem JSVGCanvas- Panel ein *.gif oder ein *.jpeg- Image darzustellen?
ich finde keine Methode: mit setURI() gehts nicht und mit add() auch nicht.


Wäre euch für Tipps sehr dankbar.
 

The_S

Top Contributor
Nochmal, ein JSVGCanvas ist keine Standardklasse! Wenn du keine Standardklasse verwendest immer die Lib + API Doku mit angeben. Alleine vom Namen her würde ich aber zu "Nein" tendieren, heißt ja nicht JSVGJPGGIFCanvas ;) . Aber du kannst solche Bilder doch ganz einfach mit normalen Swing darstellen :) .
 

MQue

Top Contributor
Ja ich kanns mit Swing darstellen, aber ich habe eine Datei in der die Pfade drinnenstehen:

wenn endsWith(.gif) -> das gif- Bild auf einem Panel anzeigen
wenn endsWith(.svg) -> das svg- Bild auf einem Panel anzeigen

Mein Problem ist mom. dass ich alles mit svg- Bilder gemacht habe (alse JSVGCanvas) und jetzt eben auch gif- Bilder darstellen will.

D.h. also, dass ich in Abhängigkeit von dem darzustellendem Bild entweder ein JPanel oder ein JSVGCanvas erzeugen muss?

JSVGCanvas -> import org.apache.batik.swing.JSVGCanvas;

lg und danke

Michl
 

The_S

Top Contributor
Ja, abhängig von der Datei was anderes verwenden. Aber warum suchst du dir nicht einfach eine lib, die SVG-Bilder z. B. in einem BufferedImage darstellen kann? Sollte einfacher sein.

JSVGCanvas -> import org.apache.batik.swing.JSVGCanvas;

Dadurch lässt sich nach wie vor noch lange nicht die verwendete Bibliothek erschließen :roll:
 

Murray

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Dadurch lässt sich nach wie vor noch lange nicht die verwendete Bibliothek erschließen :roll:

Offensichtlich ist es Batik...

Wenn du "ausnahmsweise" anstelle einer SVG-Datei mal eine Rastergrafik ausgeben willst, dann könntest du eventuell eine SVG-Datei mit einem image-Element erzeugen. Je nach API der Komponente kann das sicher auch ohne eine echte Datei einfach "im-memory" passieren.

Natürlich fängt man sich ziemlichen Memory- und Performance-Overhead ein, wenn man zur Anzeige einer Rastergrafik den Batik-Viewer bemüht - wenn man abhängig von der gerade anzuzeigende Datei in der Oberfläche eine andere Komponente einhängt, ist das aber sicher auch nicht umsonst zu haben.
 

The_S

Top Contributor
Murray hat gesagt.:
Hobbit_Im_Blutrausch hat gesagt.:
Dadurch lässt sich nach wie vor noch lange nicht die verwendete Bibliothek erschließen :roll:

Offensichtlich ist es Batik...

Für jemanden der noch nie damit gearbeitet hat ist das wohl nicht so offensichtlich. Ein kurzer link auf die entsprechende Doku würde es auch nicht-kennern von batik erlauben nach einer Lösung zu suchen ;) .
 

The_S

Top Contributor
Hab ich auch nicht als solche aufgefasst. Schwerpunkt meiner Aussage sollte auf meinen 2. Satz liegen ;) .
 

MQue

Top Contributor
http://xmlgraphics.apache.org/batik/javadoc/

Ich verwende eben JSVGCanvas als Panel und möchte jetzt, dass ich die Größe der svg- Datei angeben kann und das bild dann so groß bleibt.

Mit jSVGPanel.setRecenterOnResize(false); hab ich mal geschafft, dass das svg- Bild gleich größ bleibt aber ich möchte auch, dass ich die Größe des svg- bildes bestimmen kann, aber das bekomme ich nicht hin, die Methoden setSize() oder setBounds() reagieren irgendwie nicht.

Hat jemand eine Ahnung, wie ich das machen könnte?


vielen Dank.


lg
 

The_S

Top Contributor
Na also, damit lässt sich doch arbeiten. So spontan beim drübergucken ist mir die Methode setMySize ins Auge gesprungen.
 

MQue

Top Contributor
Ja, hab ich auch schon probiert mit myName.setMySize(new Dimension(200, 200));

Mein Problem ist aber, dass ich eben das JSVGCanvas- Panel habe und dieses Panel liegt in einem Borterlayout eines JFrames drinnen, das JSVGCanvas- Panel, passt sich also dem JFrame an und das *.svg- Bild passt sich dem JSVGCanvas- Panel an,

Ich bräuchte hingegen, dass sich das *.svg- Bild extra kontrollieren lässt (das *.scg- Bild soll immer gleich bleiben, das JSVGCanvas- Panel kann sich ja von mir aus ändern, aber das wird wahrscheinlich nicht so einfach sein?

Momentan kann ich die Größe des *svg- Bildes (bzw. des JSVGCanvas- Panels) nur über die Größe des JFrames kontrollieren.

Vielleicht hat da noch jemand eine Idee - wäre sehr dankbar dafür!!
 

MQue

Top Contributor
Das habe ich schon versucht, aber der JSVGCanvas liegt eben im JFrame drinnen und passt sich diesem an, das hilft das Ändern des JSVGCanvas gar nichts, leider.

Kann man das vielleicht irgendwie noch anders machen?
 

The_S

Top Contributor
Das hängt nicht davon ab wo das JSVGPanel liegt, sondern einfach welchen Layoutmanager der Container verwendet in dem das JSVGPanel liegt (und ggf. noch wie dieser konfiguriert ist).
 

MQue

Top Contributor
mainPanel = new JPanel(new BorderLayout());


das ist mein Panel,
in dem kommen die JSVGCanvas- Panel rein,

gibts da eine Möglichkeit?
 

The_S

Top Contributor
Ja, anderen Layoutmanager verwenden oder Layouts verschachteln. Ohne Screenshots oder genau angaben wies später mal aussehen soll, kann man da aber nicht viel sagen ...
 

MQue

Top Contributor
Bei den JSVGCanvas Panels habe ich den Layout()- Manager "null" da ich dort eben verschiedenen Button und JTextFields anzeige und die Koordinaten von einer Datei einlese (Daher benötige ich das null- Layout)

Aber leider springt mir dadurch das Bild hin und her,

welcher Layout- Manager ermöglicht es eingentlich, dass man ein Bild an der linken oberen Ecke "anbindet" und das Bild auch konstant groß bleibt?


vielen Dank
 

The_S

Top Contributor
Für komplexe Darstellungen würde ich an deiner Stelle das GridBagLayout oder wenn du es etwas einfacher haben möchtest das FormLayout von JGoodies oder das TableLayout empfehlen.

Ansonsten verschachteln!
 

MQue

Top Contributor
beim GridBagLayout kann ich ja nicht hergehen und saben ich möchte einen JButton an der stelle x,y oder,
Geht das nicht irgendwie einfacher,
da muss ich ja jetzt mein ganzes Programm umschmeissen.

Und bezüglich dem anzeigen von *.gif auf JSVGCanvas, wie kann ich das realisieren,
>>>lib, die SVG-Bilder z. B. in einem BufferedImage darstellen kann?<<< keine Ahnug, wo ich die lib herbekommen soll und wie ich das machen kann??
steh momentan voll auf dem Schlauch, bitte um Hilfe,
 

The_S

Top Contributor
Deswegen verschachtelte Layout-Manager ;) .

ja, ich hab auch kA wo du so eine lib herbekommst, ich arbeite ja auch nicht damit. War ja mehr so als alternative gedacht.
 

MQue

Top Contributor
das ändert auch nichts, das SVG- bild passt sich leider meinem JSVGCanvas- Panel an,

Weißt Du vielleicht, wie das funktionieren könnte, dass ich ein BufferedImage auf einem JSVGCanvas darstellen kann?
 

The_S

Top Contributor
nnnnnngggggggggaaaahhhhhhhhhhh ... *sich ganz fest auf die Zunge beißt*

Das sich das Image dem JSVGCanvas anpasst wirste vermutlich nicht verhindern können. Aber du kannst doch die Größe des JSVGCanvas(es :p ) anpassen ... reicht doch!
 

MQue

Top Contributor
ja, hab scho nverstanden,

weißt du etwas, wie ich ein *.gif- Bild auf einem JSVGCanvas darstellen kann?

lg und vielen Dank für die Geduld
 

Murray

Top Contributor
Michael1234 hat gesagt.:
weißt du etwas, wie ich ein *.gif- Bild auf einem JSVGCanvas darstellen kann?

Wie schon vorgeschlagen: erzeuge ein SVG-Dokument, das nur ein image-Element mit einem Verweis auf die Grafikdatei enthält:
Code:
<image xlink:href="GIFBild.gif" />

Das könnte man über eine temporäer Datei machen; besser wäre es aber wohl, direkt die Dokumentenstruktur als DOM zu erzeugen und mit AbstractJSVGComponent#setDocument in den Canvas zu setzen
 

MQue

Top Contributor
Kannst du mir das irgendwie noch genauer erklären,
steh ein bischen auf der Leitung, ich kann also AbstractJSVGComponent#setDocument eine*.gif- Datei auf einem JSVGCanvas darstallen,

Wie erstellt man das Dokument?
ich habe jetzt eine XML- Datei, aus der ich den Namen der svg- Datei auslese (z.B. batik.svg) und mit new File(...setUrl) wird die Datei geladen?

wie geht das mit der von dir beschriebenen Variante?
 

Murray

Top Contributor
Bau die im ersten Schritt eine SVG-Datei mit einem image-Element, welches eine GIF-Datei einbindet. Jetzt musst du "nur noch" diese Datei dynamisch erzeugen, also im fxen Grundgerüst jeweils mit dem Namen der gerade anzuzeigenden GIF-Datei einsetzen - eigentlich fertig.

Weil a) das Erzeugen von temporären Dateien aber Zeit kostet und b) die SVG-Datei dann ja gleich wieder eingelesen werden muss, wäre es effizienter, die SVG-"Datei" direkt als DOM-Struktur im Speicher zu erzeugen. Das kann aber der zweite Schritt sein, wenn es mit Dateien funktioniert.
 

HoaX

Top Contributor
schau ins svg, da stehts. das element svg hat u.a. die attribute height und width die die größe angeben. außerdem könnte evtl noch die "viewbox" für dich interessant sein.
 

MQue

Top Contributor
Ja, ich möchte aber ein "reines" gif oder jpeg auf das JSVGCanvas legen und finde aber nichts dazu,

keine Snhnug wie das gehen könnte.
 

Murray

Top Contributor
Michael1234 hat gesagt.:
Ja, ich möchte aber ein "reines" gif oder jpeg auf das JSVGCanvas legen und finde aber nichts dazu

Das geht ganz einfach nicht - der JSVGCanvas kann nur SVG-Grafiken anzeigen. Also verpackst du entweder die Rastergrafik in eine SVG-Grafik, oder du verwendest je nach Grafikformat eine andere Komponente. Evtl. könntest du auch durch Ableitung oder Komposition eine eigene Komponente schreiben, die beide APIs (setDocument und setImage) implementiert und dann unter der Haube entweder das eine oder das andere Image anzeigt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
Y Bild in JPanel setzen Allgemeine Java-Themen 2
Kirby.exe Bild im Zentrum spiegeln Allgemeine Java-Themen 14
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
K Bild in einem anderen Bild suchen Allgemeine Java-Themen 12
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
RalleYTN 2D-Grafik Bild mit bilinearer Interpolation skalieren Allgemeine Java-Themen 31
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
S Telefonbuch mit Bild Allgemeine Java-Themen 4
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
X Bild -> lokale Variable -> DB -> lokale Variable Allgemeine Java-Themen 3
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E am häufigsten vorkommenden Farben aus einem Bild Allgemeine Java-Themen 5
S Bild in Raster Allgemeine Java-Themen 1
S Bild in Frame Allgemeine Java-Themen 0
F Punkte in einem Bild finden Allgemeine Java-Themen 10
A Bild aufteilen für getData Allgemeine Java-Themen 3
P Wie füge ich ein Bild in die GUI ein? Allgemeine Java-Themen 7
F ImageJ: Linien und Schnittpunkte in Bild Allgemeine Java-Themen 1
A mit getClassLoader Bild laden Allgemeine Java-Themen 8
E Bild abspeichern Allgemeine Java-Themen 5
D Face.com - Gesicht im Bild finden Allgemeine Java-Themen 3
N Input/Output Bild von WebSite laden? Allgemeine Java-Themen 3
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
S programm um bild auszulesen Allgemeine Java-Themen 2
R Bild offenbar zu groß um geladen zu werden? Allgemeine Java-Themen 12
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
B Bild verschieben Allgemeine Java-Themen 6
T Bild in jar Paket einbinden Allgemeine Java-Themen 9
D Bild Typ bestimmen Allgemeine Java-Themen 9
0 2D-Grafik Bild einfärben Allgemeine Java-Themen 8
A Bild zusammenbauen! Allgemeine Java-Themen 5
A Bild von Webcam aufzeichnen Allgemeine Java-Themen 14
V 2D-Grafik Bild transparent machen. Allgemeine Java-Themen 4
H Bild einscannen und speichern Allgemeine Java-Themen 29
E Bild mit Listener einfügen Allgemeine Java-Themen 3
B Bild in String einbauen? Allgemeine Java-Themen 3
C Bild auf HDD speichern Allgemeine Java-Themen 4
X Bild aus dem Netz von URL runterladen und in GUI einbinden. Allgemeine Java-Themen 3
F Bild (Point) mit scrollen lassen Allgemeine Java-Themen 5
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
B Bild- und Texterkennung Allgemeine Java-Themen 4
S Tracing eines Bildes (a.ka. Bild vektorisieren)..? Allgemeine Java-Themen 2
destroflyer *.dds-Bild anzeigen Allgemeine Java-Themen 12
F Bild aus externer Quelle laden und Skalieren? Allgemeine Java-Themen 11
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
R JAI - RGB Bild in 3 Einzelbilder zerlegen Allgemeine Java-Themen 4
P Ascii Bild aus einem input file nur kommt nix im outputfile an?????? Allgemeine Java-Themen 5
A Möglichkeiten, ein Bild schnell auszuwerten Allgemeine Java-Themen 56
D Java Thread, Bild wird nur am Ende gezeichnet Allgemeine Java-Themen 5
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
S Bild anhand von Koordinaten einteilen Allgemeine Java-Themen 7
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
W Bild Spiegeln, aber Originalbild ausblenden Allgemeine Java-Themen 2
B Bild wird nicht angezeigt. Allgemeine Java-Themen 10
Developer_X Avatar/Bild ins Profil einbinden Allgemeine Java-Themen 10
C Bild in .txt speichern und wieder als Bild speichern Allgemeine Java-Themen 2
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2
G bild in package Allgemeine Java-Themen 6
MQue bild zoomen Allgemeine Java-Themen 2
R Farbe im Bild ersetzen Allgemeine Java-Themen 11
R PDF einlesen und als Bild abspeichern Allgemeine Java-Themen 8
P Bild aus dem Internet speichern Allgemeine Java-Themen 4
K Schreiben von Bildern: Bild bleibt leer Allgemeine Java-Themen 7
ARadauer Bild verkleinern. Allgemeine Java-Themen 9
F Bild (File) komplett serialisieren Allgemeine Java-Themen 9
H Wie erstelle ich ein Bild ( GeoTIFF ) ? Allgemeine Java-Themen 2
Ark Bild immer als ARGB laden Allgemeine Java-Themen 2
N Hochgeladenes Bild verkleinern und speichern Allgemeine Java-Themen 2
N Graphics2D als Bild abspeichern Allgemeine Java-Themen 6
M bild verkleinern Allgemeine Java-Themen 9
S JPEG Bild übertragen mit RMI ? Allgemeine Java-Themen 4
V Wie kann ich ein Bild in einem Zip Archiv abspeichern? Allgemeine Java-Themen 3
ToNyXXL Als Mauszeiger eigenes Bild verwenden! Allgemeine Java-Themen 3
M bild erkennung Allgemeine Java-Themen 2
S Bild durchs Label laufen Allgemeine Java-Themen 14
T Bild verliert Inhalt. Allgemeine Java-Themen 6
T Icon -> Bild einladen Allgemeine Java-Themen 18
G Bild neu zeichnen Allgemeine Java-Themen 13
S Bild Größe verändern Allgemeine Java-Themen 2
R Bild flackert nach Java-Install - nur bei Laufschriften. Allgemeine Java-Themen 2
H Bild base64encode als String Allgemeine Java-Themen 9
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
T Ich bin unfähig ein Bild relativ zu addressieren ... Allgemeine Java-Themen 12
D JPEGEncoder -> Schwarz Weiß Bild Allgemeine Java-Themen 2
M Eingelesene Bild wird automatisch skaliert Allgemeine Java-Themen 4
R Bild wird trotz allem einfach nicht angezeigt. - AHHHHH!!!!! Allgemeine Java-Themen 30
R Bild downloaden und darstellen lassen Allgemeine Java-Themen 5
R Bild downloaden und dann Applet ausfüllen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben