SVG – Learning by Coding
1: <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
2: <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
3: "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
4: <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
5: ]>
6:
7: <!-- SVG - Learning by Coding - http://www.datenverdrahten.de/svglbc/ -->
8: <!-- Author: Dr. Thomas Meinike 10/03 - thomas@handmadecode.de -->
9:
10: <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
11: zoomAndPan="disable" onload="getSVGDoc(evt)">
12:
13: <title>SVG - Learning by Coding</title>
14: <desc>SVG-Spezifikation in Beispielen</desc>
15:
16: <defs>
17:
18: <script type="text/javascript">
19: <![CDATA[
20:
21: var svgdoc,svgroot,newline,posx,posy,posmin=50,drawing;
22: var linecol="#000",linewidth="1px",check=false;
23: var svgns="http://www.w3.org/2000/svg";
24:
25:
26: function getSVGDoc(load_evt)
27: {
28: svgdoc=load_evt.target.ownerDocument;
29: svgroot=svgdoc.rootElement;
30:
31: drawing=svgdoc.getElementById("drawing");
32:
33: svgroot.addEventListener("mousedown",MDown,false);
34: svgroot.addEventListener("mousemove",MMove,false);
35: svgroot.addEventListener("mouseup",MUp,false);
36: }
37:
38:
39: function MDown(mousedown_event)
40: {
41: Coords(mousedown_event);
42:
43: newline=svgdoc.createElementNS(svgns,"line");
44: newline.setAttribute("x1",posx);
45: newline.setAttribute("x2",posx);
46: newline.setAttribute("y1",posy);
47: newline.setAttribute("y2",posy);
48: newline.setAttribute("stroke",linecol);
49: newline.setAttribute("stroke-width",linewidth);
50:
51: check=true;
52: }
53:
54:
55: function MMove(mousemove_event)
56: {
57: if(check)
58: {
59: Coords(mousemove_event);
60:
61: newline.setAttribute("x2",posx);
62: newline.setAttribute("y2",posy);
63: drawing.appendChild(newline);
64: }
65: }
66:
67:
68: function MUp()
69: {
70: check=false;
71: }
72:
73:
74: function Coords(mouse_event)
75: {
76: posx=mouse_event.clientX;
77: posy=mouse_event.clientY;
78:
79: if(posx<posmin)posx=posmin;
80: if(posy<posmin)posy=posmin;
81: if(posx>640+posmin)posx=640+posmin;
82: if(posy>480+posmin)posy=480+posmin;
83: }
84:
85:
86: function SetLineColor(mousedown_event)
87: {
88: linecol=mousedown_event.target.style.getPropertyValue("fill");
89: svgdoc.getElementById("aktline").style.setProperty("stroke",linecol,"");
90: }
91:
92:
93: function SetLineWidth(mousedown_event)
94: {
95: linewidth=mousedown_event.target.style.getPropertyValue("stroke-width");
96: svgdoc.getElementById("aktline").style.setProperty("stroke-width",linewidth,"");
97: }
98:
99: ]]>
100: </script>
101:
102: </defs>
103:
104: <text x="30" y="30" style="fill: #000; font-size: 24px">
105: Linien zeichnen (mit Wahl von Farbe und Strichstärke)</text>
106:
107: <rect x="50" y="50" width="640" height="480" rx="5" ry="5"
108: style="fill: #FFF; stroke: #000"/>
109:
110: <g onmousedown="SetLineColor(evt)">
111:
112: <rect x="30" y="60" width="10" height="10"
113: style="fill: #FF0; stroke: #000"/>
114:
115: <rect x="30" y="80" width="10" height="10"
116: style="fill: #F00; stroke: #000"/>
117:
118: <rect x="30" y="100" width="10" height="10"
119: style="fill: #090; stroke: #000"/>
120:
121: <rect x="30" y="120" width="10" height="10"
122: style="fill: #00C; stroke: #000"/>
123:
124: <rect x="30" y="140" width="10" height="10"
125: style="fill: #000; stroke: #000"/>
126:
127: </g>
128:
129: <g onmousedown="SetLineWidth(evt)">
130:
131: <line x1="30" y1="180" x2="40" y2="180"
132: style="stroke: #000; stroke-width: 1px"/>
133:
134: <line x1="30" y1="200" x2="40" y2="200"
135: style="stroke: #000; stroke-width: 2px"/>
136:
137: <line x1="30" y1="220" x2="40" y2="220"
138: style="stroke: #000; stroke-width: 3px"/>
139:
140: <line x1="30" y1="240" x2="40" y2="240"
141: style="stroke: #000; stroke-width: 4px"/>
142:
143: <line x1="30" y1="260" x2="40" y2="260"
144: style="stroke: #000; stroke-width: 5px"/>
145:
146: </g>
147:
148: <line id="aktline" x1="18" y1="58" x2="18" y2="262"
149: style="stroke: #000; stroke-width: 1px"/>
150:
151: <!-- Ausgabe der Zeichnungsobjekte -->
152: <g id="drawing"></g>
153:
154: </svg>
[zum Anfang]