我使用Keith Wood的svg jquery插件,而不是HTML5畫布。如何在縮放的SVG中將屏幕座標轉換爲文檔空間?
我定義我的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'});
});
好吧,我得到它的工作使用您的示例代碼來獲取映射和JQuery的SVG插件繪製圓圈。 – Jon