我有一个代码,可以从HTML
表生成SVG
图像。JSFiddle链接。
生成的image
有一个问题:每个元素都是模糊的,就像放大图像一样。
我试图更改字体大小,使用pt
、em
或px
。。。试着改变桌子的宽度和高度。。。同样的结果。
我想在SVG
中看到我的HTML
table
1:1。这里有什么问题?
这段代码中有两个问题。
首先是根据需要动态缩放画布。当你缩放画布时,你也在缩放画布的2dcontext区域中的像素,它们不像html或svg那样缩放;它们像像素组成的图像一样缩放。这就是模糊的原因。
第二个问题被第一个问题掩盖了;您正在创建的svg文档不知道如何自动调整自身大小,因此将svg元素的宽度和高度设置为100%不会有任何作用。所以,我的建议是:
-
在jQuery中动态创建画布标记,并将其宽度和高度属性设置为表边框的宽度。在代码中先前调整画布元素大小的位置执行此操作。最简单的方法是用div:替换canvas元素
<div id="canvasy"></div>
然后,将画布元素动态地附加到其中,如下所示:
$('#canvasy').append('<canvas id="canvas" width="'+($(id).width()+5)+'" height="'+($(id).height()+5)+'"></canvas>');
-
构建svg时,在svg元素中使用相同的宽度/高度值。
这是你的小提琴的工作版本