Ich möchte eine Bezier-Kurve mit Mausereignis zeichnen.Bezier-Kurve mit Mausereignis
function draw(selection)
{
var keep = false, path, xy0;
line = d3.svg.line()
.interpolate(function(points) {return points.join("M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80"); })
.x(function(d) {return d[0];})
.y(function(d) {return d[1];});
selection
.on('mousedown', function() {
keep = true;
xy0 = d3.mouse(this);
path = d3.select('svg')
.append('path')
.attr('d', line([xy0, xy0]))
.style({'stroke': 'black', 'stroke-width': '3px'});
})
.on('mouseup', function() {
keep = false;
})
.on('mousemove', function(){
if(keep) {
Line = line([xy0, d3.mouse(this).map(function(x) {return x - 1;})]);
console.log(Line);
path.attr('points', Line);
}
});
}
Aber es funktioniert nicht. Hast du eine Idee, wie das geht?
Vielen Dank im Voraus,
Was genau versuchen Sie zu tun ? Diese Linie 'points.join (" M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80 "); macht wenig Sinn. Auf Mausklick mit gedrückter Schaltfläche möchten Sie eine Kurve zwischen Mauszeigerposition und aktueller Position zeichnen? – Mark
Ich möchte eine Bezier-Kurve zwischen der Mausposition und der aktuellen Position zeichnen. M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80 ist der Parameter der Bezierkurve. Wie kann ich dies in meinem Code implementieren? Danke – zoint
"* Aber es funktioniert nicht *" ist keine Problemaussage, es ist bestenfalls eine Meinung (der Code tut genau das, was Sie geschrieben haben; es funktioniert genau so, wie der Quellcode es beabsichtigt): Was hast du erwartet ** diesen Code zu tun, was macht er stattdessen, wo glaubst du, woher dieser Unterschied kommt und * was hast du bisher versucht, das zu beheben *? –