我可以给你两个建议:
1)可能 SVG 导入会考虑原始大小并为您进行缩放。但是,在 Illustrator 中进行编辑时,您可能会围绕它有一个更大的文档,这会使 svgImport 混淆?
2)否则,您可以将纸张作为一组导入。然后缩放集合。
var set = paper.set();
paper.importSVG(svgdata, set);
set.scale( 2, 2, centerx, centery );
没有示例的情况下,我不确定centerx和centery应该是什么。
[编辑(获得批准后)]
看起来Raphael可以让您获取集合的边界框:
var bbox = set.getBBox();
// You'll now have bbox.x, bbox.y, bbox.width and bbox.height at your disposal.
// For example:
paper.rect( bbox.x, bbox.y, bbox.width, bbox.height ).attr('border', 'red');
我建议你这样做:
- 获取导入的SVG集的边界框
- 使用
set.translate
将边界框的中心与纸张的中心对齐(例如,对于x轴平移,可以使用类似于( paperwidth / 2 ) - ( bbox.x + bbox.width / 2 )
的内容)。
- 根据边界框大小与纸张大小进行缩放。您可能想要在保持长宽比的同时缩放,因此必须使用最接近
1
的比例(即paper.width/bbox.width
和paper.height/bbox.height
之一)。
- (注意:现在将纸张中心用作缩放中心-因为您已经翻译了您的设置,所以实际上这也是svg设置的中心)
这是我凭记忆写的,可能不是100%准确,但如果您理解了我的意思,您可能能够消除错误。