2013-12-16 52 views
3

我尝试将ImageElement添加到GElement。虽然<image>元素正确创建在<g>下,但它没有显示出来。如果我复制由Dart创建的<image>元素,并将其添加到html文件中,则会显示。我使用下面的代码片段:Dart svg ImageElement没有显示

ImageElement aImage = new ImageElement(); 
aImage.setAttribute('x', '$x'); 
aImage.setAttribute('y', '$y'); 
aImage.setAttribute('width', '30'); 
aImage.setAttribute('height', '30'); 
aImage.setAttribute('xlink:href', 'http://icons.iconarchive.com/icons/deleket/sleek-xp-software/256/Yahoo-Messenger-icon.png'); 
group.append(a); 
+0

什么是“GroupElement”?在html5中我没有看到任何''标签。 –

+0

[GElement](https://api.dartlang.org/docs/channels/stable/latest/dart_svg/GElement.html) – ringstaff

回答

4

您必须设置使用getNamespacedAttributes将href(见this)。另外,确保组元素位于SvgSvgElement上。这对我有效:

svg.SvgSvgElement svgBase = new svg.SvgSvgElement(); 
svg.ImageElement aImage = new svg.ImageElement(); 
svg.GElement group = new svg.GElement(); 


aImage.setAttribute('x', '50'); 
aImage.setAttribute('y', '50'); 
aImage.setAttribute('width', '30'); 
aImage.setAttribute('height', '30'); 
aImage.getNamespacedAttributes('http://www.w3.org/1999/xlink')['href'] = 'http://icons.iconarchive.com/icons/deleket/sleek-xp-software/256/Yahoo-Messenger-icon.png'; 

group.append(aImage); 
svgBase.append(group); 
querySelector('#container').append(svgBase); 
+0

你是英雄!经过两天的尝试,我用getNamespacedAttributes('http://www.w3.org/1999/xlink')['href'] ...但是.setAttribute(“href”,link)有什么区别? – Dafen