我使用java,svg canvas,svg文件和eclipse。
我的画布管理文件的dnd。当前文档中基本svg文件的dnd是可以的。我们需要在当前文档中复制已删除文件的内容。
我现在要做的是找到一个文件,该文件将作为子图像合并到当前文档中。
情况: 我有一个A.svg文件,我想将它用作B.svg文件中的子图像。 我在B.svg文档中找到A.svg文件。
会发生什么: 在B.svg文件的标签“defs”中创建标签“image”,并创建“use”标签以显示引用的子图像。
这是我在dnd之前的B.svg文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="91" contentStyleType="text/css" viewBox="0 0 91 159" height="159" version="1.0">
<defs/>
</svg>
这是在我的子图像A.svg:
之后<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="91" contentStyleType="text/css" viewBox="0 0 91 159" height="159" version="1.0">
<defs>
<g id="A">
<image width="91" xlink:href="A.svg" xlink:type="simple" xlink:actuate="onLoad" height="159" xlink:show="embed"/>
</g>
<defs/>
<use xlink:actuate="onLoad" xlink:type="simple" xlink:show="embed" transform="matrix(1 0 0 1 485 134)" xlink:href="#A"/>
</svg>
我动态修改svg dom,然后在dnd之后刷新画布内容。 我的问题是,在我下载子图像后,即使使用此刷新,内容也不会更新。我的可选点出现在坐标0,0处,但这就是全部。
但如果我关闭并重新打开画布,那么子图像就会显示出来。
我希望得到相同的结果,但无需关闭并重新打开svg文件。
告诉我您是否需要更多信息,或者我是否不够清楚。