Interactief SVG-plaatjes tekenen en wijzigen

Op deze pagina wordt beschreven hoe je het aanpakt om SVG.plaatjes interactief te wijzigen. Zoals met alles op deze website, komt er geen server aan te pas. Alles gebeurt lokaal, in de browser.

Hieronder zie je een plaatje, dat is getekend met SVG. Als je er op klikt of tikt verschijnt de code van dat onderdeel in het tekstveld onder het plaatje. Daar kun je wijzigen. Als je op "Klaar" klikt worden de wijzigen in het plaatje verwerkt.
Als je op "Nieuw" klikt, wordt het plaatje gewist en kun je code voor een nieuw plaatje invoeren.
De afmetingen van het nieuwe plaatje zijn h × b = 320px × 600px. Die kun je naar eigen inzicht wijzigen.
In alle gevallen is het nodig dat de <svg>-tag, met hoogte- en breedteattributen en eind-tag, in de code aanwezig is. Anders verdwijnt het plaatje uit beeld.
Met een klik op "Reset" wordt de pagina opnieuw geladen en ga je terug naar het oorspronkelijke plaatje. Er is geen 'undo'-functie.

Mooi Sorry, uw browser heeft geen ondersteuning voor de <svg>-tag.

N.B.: De bewerkte plaatjes kunnen niet direct worden opgeslagen. De aanpak om dat te doen (met Windows) is als volgt:
•   Selecteer alle code in het editveld en kopieer die naar het klembord met CTRL+C.
•   Open Kladblok of een andere teksteditor en plak de code met CTRL+V.
•   Sla het bestand op in je PC
Terugladen van het gewijzigde plaatje in de editor gaat als volgt:
•   Open het opgeslagen bestand in Kladblok
•   Selecteer de inhoud en kopieer die naar het klembord met CTRL+C.
•   Selecteer de volledige inhoud van het editveld.
•   Plak de code op het klembord in het editveld met CTRL+V. en klik op Klaar.

Gebruik:

De code van het voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<script>
let svgPlaatje = "";
function maakEdit() {
    document.getElementById('codeEdit').value = svgPlaatje;
}
function verwerkEdit() {
  svgPlaatje = document.getElementById('codeEdit').value;
  document.getElementById('plaatje').innerHTML = svgPlaatje;
}
function clearEdit() {
  svgPlaatje = '<svg width="600" height="320" style="border:1px solid black">\n';
  svgPlaatje += '</svg>';
  document.getElementById('plaatje').innerHTML = svgPlaatje;
  document.getElementById('codeEdit').value = svgPlaatje;
}
function reloadEdit() {
  window.location.reload();
}
function initialiseer() {
  svgPlaatje = document.getElementById('plaatje').innerHTML;
  maakEdit();
}
window.addEventListener('load',initialiseer);
</script>

(Zet dit in de <BODY> op de plaats waar het plaatje en de editor moeten verschijnen).

<div id='plaatje'>
<svg width="600" height="320" style="border:1px solid black">

<!-- Cirkel -->
<circle cx="500" cy="210" r="80" stroke="green" stroke-width="4" fill="#ff7" />
<!-- Rechthoek -->
<rect x="290" y="10" width="300" height="100" style="fill:rgb(0,0,240);stroke-width:5;stroke:#888" />
<!-- Vierkant met afgeronde hoeken -->
<rect x="10" y="160" rx="20" ry="20" width="150" height="150" style="fill:red;stroke:black;stroke-width:5;opacity:0.5" />
<!-- Ster -->
<polygon points="270,110 210,298 360,178 190,178 330,298"
&style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
<!-- Ellips met verlopende achtergrond -->
<defs>
  <linearGradient id="grad1" x1="0%" y1="0%" x2="0%" y2="80%" >
  <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
  <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
  </linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
<!-- Tekst -->
<text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">Mooi</text>
<!-- Rechte lijn -->
<line x1="300" y1="0" x2="500" y2="200" style="stroke:rgb(255,0,0);stroke-width:5" />
Sorry, uw browser heeft geen ondersteuning voor de &lt;svg&gt;-tag.
</svg>
</div>

<form action="JavaScript:verwerkEdit()"
    style="width:600px; text-align:center">
  <textarea id="codeEdit" rows="20" cols="65"
    style="margin:15px auto 15px auto"></textarea>
  <input type="submit" value="&lt;&lt; &nbsp; Klaar &nbsp; &gt;&gt;"
    style="text-align:center; font-size:16px; color:navy;
      font-weight:bold">
  <input type="button" value=" &nbsp;* Nieuw *&nbsp; "
    style="text-align:center; font-size:16px; color:maroon;
      font-weight:bold; float:right; margin-right:50px"
      onclick="clearEdit()">
  <input type="button" value=" &nbsp;Reset&nbsp; "
    style="text-align:center; font-size:16px; font-weight:bold;
      float:right; margin-right:50px" onclick="reloadEdit()">
</form>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb673.zip, 1282 bytes.

Opmerking:
 
Het voorbeeld is beschikbaar als "losse" applicatie. Zie daar voor de listbox JavaScript Applicaties op het voorblad van deze site, kies Codegeneratoren, daarna Code editor voor SVG plaatjes.

 
terug

html-673; Laatste wijziging: 23 jul^i 2022