download original
  
var svgRoot, mainCanvas;
//Methode zu Event hinzufuegen die clientX/Y als SVGPoint zurueckgibt
Event.prototype.getClientCoords = function() {
    var result = svgRoot.createSVGPoint();
    result.x = this.clientX;
    result.y = this.clientY;
    return result;
}
function onLoad(){
    svgRoot = document.getElementById('svgRoot');
    mainCanvas = document.getElementById('mainCanvas');
    mainCanvas.onmousedown = drawStart;
    mainCanvas.onmousemove = drawVertice;
    mainCanvas.onmouseup = drawEnd;
}
var screenToCanvasTM
var currPath
function drawStart(evt) {
    //TM nur einmal am Anfang jedes Pfads berechnen (Performance)
    screenToCanvasTM = mainCanvas.getScreenCTM().inverse();
    var canvasCoords = evt.getClientCoords().matrixTransform(screenToCanvasTM);
    currPath = document.createElementNS("http://www.w3.org/2000/svg","path");
    currPath.setAttribute("d", "M "+canvasCoords.x+" "+canvasCoords.y);;
    currPath.setAttribute("stroke","black");;
    currPath.setAttribute("fill","none");;
    mainCanvas.appendChild(currPath);
}
function drawVertice(evt) {
    if (currPath) {
        var canvasCoords = evt.getClientCoords().matrixTransform(screenToCanvasTM);
        currPath.setAttribute("d", currPath.getAttribute("d")
                              + " L "+canvasCoords.x+" "+canvasCoords.y);
    }
}
function drawEnd(evt) {
    var canvasCoords = evt.getClientCoords().matrixTransform(screenToCanvasTM);
    currPath.setAttribute("d", currPath.getAttribute("d")
                          + " L "+canvasCoords.x+" "+canvasCoords.y+" z");
    currPath = null;
}
  
   back to svg 
  
  (C) 1998-2017 Olaf Klischat  <olaf.klischat@gmail.com>