Scalable Vector Graphics

Slides:



Advertisements
Ähnliche Präsentationen
Computer Graphics Shader
Advertisements

3. 3D-Betrachtungstransformationen
SVG Scalable Vector Graphics
verweis-sensitive Grafiken
EPML2SVG – Generating Websites from EPML Processes Jan Mendling, Alberto Brabenetz, Gustaf Neumann Abteilung für Wirtschaftsinformatik und Neue Medien,
Webstandards Leinwandbindung Jeder Kettfaden liegt abwechselnd unter bzw. über dem Schußfaden Köperbindung Die Bindungspunkte am diagonalen Köpergrat.
XML.
Anmerkungen zu XML Im September 2000 Entwicklung/Anspruch von XML
SVG und X3D Referentin: Gergana Ivanova
Grundlagen der Geometrie
FH-Hof Einbindung von JavaScript Anweisungen
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java2D Richard Göbel.
FH-Hof Scalable Vector Graphics Richard Göbel. FH-Hof Einführung Scalable Vector Graphics (SVG) - Darstellung von Vektorgraphiken in einem Web-Browser.
DOM (Document Object Model)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
HTML - Eine erste Annäherung
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Tinosch Ganjineh, Christian v. Prollius 1 Scalable Vector Graphics SVG.
Einführung XML XML Einführung Andreas Leicht.
By Monika Krolak & Christian Meschke
Web-GIS und Multimedia
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
Proseminar Auszeichnungssprachen WS04/05 XML und Multimedia Referat von Benjamin Bornemann.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Vortrag HTML, XHTML, DHTML
Grafikformate Nicolas Ruh.
FHP - Fachbereich Bauingenieurwesen
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
Grafikprogrammierung
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
WEBPROGRAMMIERUNG Informatik-Präsentation von Armin Nuart.
Übung Kapitel 9 Übungsinhalte: Einfügen von Formen und Textfeldern.
Delphi TCanvas Informatik-AG. TCanvas Viele der sichtbaren in Delphi vorhanden Objekte besitzen die Eigenschaft Canvas. Übersetzt heißt Canvas Leinwand.
Graphics in PDF Universität zu Köln Intelligente Dateisysteme Prof. Dr. Manfred Thaller WS 2013/14 Leonard Bornefeld-Ettmann.
Java für Fortgeschrittene
Zeichnung erstellen Zeichnen-Symbolleiste einblenden mit Symbol
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Bildbearbeitung Nicolas Ruh.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Oliver Spritzendorfer Thomas Fekete
Vektororientierte Grafikbearbeitung
Bilddateiformate, Metadaten, KML
XML (Extensible Markup Language)
Stand der Normung um XML (eXtensible Markup Language) & die Aktivitäten des DIN (Stand: November 2000) Bernd Bösler, Referent im DIN/NBü DIN Deutsches.
Digitale Medien I Programmablauf der Vorlesung am 05. Juli 2014 Dozent: Gerhard Fleige Digitale Medien I Samstag, 05. Juli 2014 Die nachfolgenden Folien.
Zeichnen Mit den Officeprogrammen kann man sehr viele einfache Grafiken direkt im Programm erstellen. Es handelt sich um ein Zeichenprogramm Malprogramme.
Schaltfläche-Star 1 Schaltfläche Star. Schaltfläche-Star 2 Beispiel Star Erstellen eines grünen Rechtecks: Hintergrund auf Größe 200x50 Pixel minimieren,
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
A&D Persa K TB Herzlich Willkommen zum Flash 4 - Seminar.
Thomas Reimann1 SVGSVG Scalable Vector Graphics. 2 Themenüberblick XML Grafiksysteme SVG Überblick Beispiel (step by step) Tools Weiterführendes Material.
Grundlagen der Geometrie
XML-basierte Visualisierung von Geodaten mittels SVG
Grafikformate Nicolas Ruh.
1 Java und XML Stephan Baldes Warum XML? In welchem Format wurden die Daten gespeichert? Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe Peter;Maier;7;9;1980;Karlsruhe;Freiburg.
Microsoft Silverlight Autor: Christian Pirker. Inhalt Einführung Silverlight Einführung XAML Silverlight 1.0 und 1.1 Silverlight 2.0 Silverlight 3.0 Ausblick.
Geomapping. Themen Heute GeoJSON Paths Projections Features Daten beschaffen Projekte weiter bringen.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Desktop-Publishing Grafik- und Bildformate. F. Müller Übersicht Bitmaps – Pixel, Größe – Auflösung – Optimierung – Farbtiefe – Speicherformate – Animationen.
SVG - Scalable Vector Graphic
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
Grafikformate.
Grafikformate Nicolas Ruh.
Dokumentenproduktion im Medienzentrum
Thema Aussage SmartArt-Grafik mit Bildern auf rotem Hintergrund
 Präsentation transkript:

Scalable Vector Graphics SVG Scalable Vector Graphics Thomas Reimann

Themenüberblick XML Grafiksysteme SVG Überblick Beispiel (step by step) Tools Weiterführendes Material

XML (eXtensible Markup Language) Eigentlich nichts Neues Möglichkeit Daten zu strukturieren Regeln (DTD) erstellen Basiswerkzeuge für Auslesen, Durchsuchen und Sortieren Auf Inhalte mittels DOM zugreifen

XML Beispiel <?xml version="1.0" standalone="no" encoding="UTF-8"?> <!DOCTYPE adressen SYSTEM "adressen.dtd"> <adressen> <eintrag> <name>Reimann</name> <vorname>Thomas</vorname> <email>reimann@inf.fu-berlin.de</email> </eintrag> <name>Muster</name> <email>muster@muster.de</email> </adressen>

DTD (Document Type Definition) <!ELEMENT adressen ((eintrag)+)> <!ELEMENT eintrag ((name)+,(vorname)?,(email)+)> <!ELEMENT name (#PCDATA)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT email (#PCDATA)> ? Einmal oder keinmal + Einmal oder öfter * Keinmal, einmal oder öfter , Sequenz (gefolgt von) | Alternative

DOM (Document Object Model) Sprachunabhängiges Interfacemodell Einzelne Objekte eines XML-Dokumentes in einem Baum abbilden Über ein API den Zugriff auf diese Objekte ermöglichen

Raster Grafik Bild wird repräsentiert durch ein Pixelarray Pixel setzt sich aus Farbe und Helligkeit zusammen Keine Möglichkeit einzelne Objekte nach-/ zu bearbeiten Feste Dimension

Wann wird Raster Grafik benutzt? Fotos Fax Gescannte Bilder

Vektor Grafik Bild wird durch geometrische Formen beschrieben Bild kann ohne Verluste vergrößert oder verkleinert werden Bild sehr klein Keine feste Dimension

Wo wird Vektor Grafik benutzt? Computer Assisted Drafting (CAD) Adobe PostScript Macromedia Flash SVG

Warum nun SVG JPEG/GIF/PNG Pixel basiert Quicktime/Flash Vektor basiert (Lizenz)

Vor-/Nachteile Vorteile Freies Format (W3C) XML-basiert Klein User Agent wird benötigt

Geschichte von SVG Precision Graphics Markup Language (PGML) im April 1998 Vector Markup Language (VML) im Mai 1998 SVG Entwurf im Oktober 1998 SVG 1.0 im September 2001 verabschiedet

Wie erkenne ich SVG MIME Type image/svg+xml Dateiendung svg oder svgz

Größe einer SVG Die „Welt“ einer SVG ist unendlich groß Definieren einen Ausschnitt (Viewport) der SVG für den wir uns interessieren

Default Koordinaten Richtung der x-Achse von links nach rechts Richtung der y-Achse von oben nach unten Ursprung oben links (0,0)

Beispiel (step by step) Grundaufbau einer SVG Basic Shapes Transformationen Patterns und Gradients Effekte Animationen

Grundaufbau einer SVG <?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg width="640" height="480"> <title>Beispiel</title> <desc>Eine Kuh in der Sonne</desc> <!-- Definitionen und Zeichnungen --> </svg>

Definitionen <svg width="640" height="480"> <defs> <!-- Definitionen --> </defs> <!-- Zeichnungen --> </svg>

1. Schritt: Hintergrund Rechteck von der Größe des gesamten Bildes Rechteck mit einem Farbverlauf gefüllt

Linear Gradient <defs> <linearGradient id=„gradient_1" x1="0%" y1="0%" x2="0%" y2="100%" spreadMethod="pad" gradientUnits="objectBoundingBox"> <stop offset="0%" style="stop-color:rgb(255,255,255); stop-opacity:0"/> <stop offset="100%" style="stop-color:rgb(192,255,255); stop-opacity:1"/> </linearGradient> </defs>

Basic Shapes Lines Rectangle Circles und Ellipses Polygon Polyline

Basic Shape (Rectangle) </defs> <rect id="hintergrund" x="0" y="0" width="639" height="479" style="fill:url(#gradient_1); stroke:none"/> </svg>

Rahmen Einen schwarzen Rahmen im Bild einfügen <rect id="hintergrund" x="0" y="0" width="639" height="479" style="fill:url(#gradient_1)"/> <rect id="rahmen" x="0" y="0" width="639„ height="479" style="stroke:rgb(0,0,0);stroke-width:1;fill:none"/> </svg>

2. Schritt: Wiese Grasfläche mittels eines Path darstellen Ebenfalls mit einem Farbverlauf (Gradient) füllen

Path Befehl Argumente Effekt M,m x,y move L,l line H,h x horizontal line V,v y vertical line Z,z close

Path (move, line, close) <rect id="hintergrund" x="0" y="0" width="639" height="479" style="fill:url(#gradient_1)"/> <path id="gras" d="M0 479 L639 479 L633 450 L627 470 L621 450 L615 470 L609 450 L603 470 L597 450 L591 470 L585 450 L579 470 L573 450 L567 470 L561 450 L555 470 L549 450 L543 470 ... z" style="fill:url(#gradient_2); stroke:rgb(0,0,0); stroke-width:1"/> <rect id="rahmen" x="0" y="0" width="639" height="479" style="stroke:rgb(0,0,0);stroke-width:1;fill:none"/>

Unregelmäßige Wiese Gras mittels cubic Bézier curves darstellen Zweite Grasfläche versetzt zeichnen

Path Befehl Argumente Effekt A,a rx, ry, x-axis-rotation large-arc sweep x y elliptical arc Q,q x1, y1, x, y quadratic Bézier curve T,t x, y C,c x1, y1, x2, y2, x, y cubic Bézier curve S,s x2, y2, x, y

Path (curves) <path id="gras_1" d="M639 470 L-0.00078 470 L7.17522 409.235 C15.4402 422.176 11.9992 461 11.9992 461 L22.7052 413.941 C17.1462 431.588 23.9992 461 23.9992 461 L29.9992 441 L35.9992 461 C37.2052 443.647 26.7052 391.588 26.7052 391.588 C43.7932 408.941 46.8232 446.882 46.8232 446.882 C46.8232 446.882 51.0282 413.059 59.8812 393.941 C59.8812 393.941 57.6172 441.882 59.9992 461 L65.9992 441 … z/>

3. Schritt: Palmen Palme an falscher Position platzieren Einzelne Elemente der Palme in einer Gruppe zusammenfassen Palme transformieren Palme duplizieren Zweite Palme transformieren

Translation Befehl Argumente Effekt translate x, y Verschieben des Koordinatensystems <g id="palmen" transform="translate(333 114)"> … </g>

Weitere Transformationen Argumente Effekt scale xfactor, yfactor Koordinatensystem skalieren factor rotate angle Koordinatensystem rotieren Rotate angle, centerX, centerY Koordinatensystem um (centerX, centerY) rotieren skewX Verschiebt x-Koordinaten um Winkel skewY Verschiebt y-Koordinaten um Winkel

Vor der Translation

Nach der Translation

Zweite Palme <use id="palme_2" xlink:href="#palme_1" transform="matrix(-1 0 0 1 949.635 0) translate(-54 5) translate(338.088 464.647) scale(0.89759 0.848374) translate(-338.088 -464.647)"/>

4. Schritt: Zaun Einen Zaun mit einer Texture zeichnen Texture mittels <pattern> und <image> erstellen

<pattern> und <image> <defs> <pattern id="tile" width="50" height="49" patternUnits="userSpaceOnUse"> <image width="50" height="49" xlink:href="holz.png"/> </pattern> </defs> <g id="zaun"> <path d="..." style="fill:url(#tile); stroke:rgb(0,0,0); stroke-width:1"/> </g>

5. Schritt: Sonne Einen Glow Effekt definieren Sonne mit diesem Effekt versehen

Glow Effekt <filter id="Glow" filterUnits="objectBoundingBox" x="-10%" y="-10%" width="150%" height="150%"> <feMorphology in="SourceAlpha" result="morphedAlpha" radius="3" operator="dilate"/> <feGaussianBlur in="morphedAlpha" result="blurredAlpha" stdDeviation="3"/> <feFlood result="flooded" style="flood- color:rgb(255,255,128);flood-opacity:1"/> <feComposite operator="in" in="flooded" in2="blurredAlpha" result="coloredShadow"/> <feComposite in="SourceGraphic" in2="coloredShadow" operator="over"/> </filter>

Sonne mit Effekt versehen <g id="sonne" style="filter:url(#Glow)"> … </g>

6. Schritt: Kuh Eine Kuh mit Flecken erstellen Von einem Fleck wird mittels Clipping Path nur ein Teil gezeichnet (nur auf dem Körper der Kuh)

Clipping <clipPath id="bauch_clip"> <ellipse id="bauch" cx="202" cy="324" rx="62" ry="58"/> </clipPath> <use xlink:href="#bauch" style="fill:url(#kuh-gradient);stroke:rgb(0,0,0);stroke-width:1"/> <ellipse id="fleck_rechts" cx="238" cy="355.5" rx="22" ry="17.5" style="fill:rgb(0,0,0); stroke:rgb(0,0,0);stroke-width:1; clip-path:url(#bauch_clip)"/>

7. Schritt: Schild Ein Schild mit Text auf einem Text Path Text mittels True Type Font

<defs> <path id="path_1" d="M361.5 378 C465.5 364.25 447.5 351.75 502.5 342" style="fill:none; stroke:rgb(0,0,0);stroke-width:1"/> … </defs> <text x="70" y="240" style="font-size:26;font-family:Comic Sans MS;text-anchor:start"> <textPath xlink:href="#path_1"> Informatik </textPath> </text>

8. Schritt: Animationen SMIL 2 JavaScript

SMIL 2 Animationen in XML formulieren Einfacher für den Benutzer zu lesen Einfacher für XML-Parser zu verarbeiten

SMIL 2 <animate> <set> <animateColor> <animateTransform> <animateMotion>

<set> <path id="daze" d="..." transform="…" style="fill:none; stroke:rgb(255,0,0); stroke-width:2; visibility:hidden"> <set attributeName="visibility" attributeType="CSS" begin="11.5s" dur="1s" fill="freeze" to="visible"/> </path>

<animateColor> <rect id="hintergrung_1" x="0" y="0" width="639" height="479" style="fill:rgb(255,255,255); stroke:rgb(0,0,0);stroke-width:1"> <animateColor id="weiss_nach_schwarz" begin="3s" attributeName="fill" dur="5s" fill="freeze" from="rgb(255,255,255)" to="rgb(0,0,0)"/> </rect>

<animateTransform> <g id="wolke"> <animateTransform id="cloud_go" attributeName="transform" attributeType="XML" type="translate" dur="5s" fill="freeze" begin="3s" from="0 0" to="650 0"/> … </g>

<animateMotion> <path id="futter" d="…" style="fill:url(#palme-fade_1); stroke:rgb(0,0,0);stroke-width:1"> <animateMotion path="M0 0 L5 5 L0 -5 L-5 -5 L0 5" dur="4s" begin="1s" repeatCount="2.5" fill="freeze"/> </path>

JavaScript/ECMA-Script (European Computer Manufacturer‘s Association) Interaktion mit Benutzer Einige Animationen nur mit Scripting möglich (z.B. path-data ändern)

<script type="text/ecmascript"> <![CDATA[ function enlarge_circle(evt) { var circle = evt.getTarget(); circle.setAttribute("r", 50); } function shrink_circle(evt) circle.setAttribute("r", 25); // ]]> </script> <circle cx="150" cy="100" r="25" fill="red" onmouseover="enlarge_circle(evt)" onmouseout="shrink_circle(evt)"/>

Tools Adobe SVG Viewer 3.0 (Win/Mac/Linux/Solaris) Jasc WebDraw 1.0 (Win) Apache Batik 1.5 (Java) Gnome Nautilus

Weiterführendes Material www.w3c.org www.adobe.com/svg xml.apache.org/batik SVG Essentials (O‘Reilly)