我正在使用Keith Wood开发的SVG jQuery插件,而不是HTML5画布。
我如下所示定义我的svg图像,以使我的svg三角形图像适应其div容器:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" viewBox="0 0 299 215" >
<g>
<polygon points="1,1 299,1 149,210" fill="blue" stroke="blue" stroke-width="0" class="votenow"/>
</g>
</svg>
那么我如何匹配坐标系统呢?
我想在三角形的某个点捕获鼠标位置,并在这些X Y坐标处画一个圆圈,但由于坐标系统不匹配,圆圈会被画在不同的位置。
因此,圆将在点10,10处被绘制,但在50,60处显示,例如。
人们如何应对这种情况?
谢谢。
最终解决方案:使用JQuery插件绘制圆圈,并使用getScreenCTM()计算点的位置。
也许我不再需要JQuery插件,但现在可以用它。没看到只使用插件就能完成的方法。
$('#cvtriangle .tri').on( "click", function(e) {
jqsvg = $('#cvtriangle').svg('get');
svg = document.querySelector("svg");
var pt = svg.createSVGPoint();
pt.x = e.clientX;
pt.y = e.clientY;
pt = pt.matrixTransform(svg.getScreenCTM().inverse());
jqsvg.circle(pt.x, pt.y, 5, {class: 'vote', fill: 'white', stroke: 'white', strokeWidth: 2, cursor: 'pointer'});
});