Canvas SVG到画布,填充Canvg行并删除背景行?
我正在尝试使用将SVG转换为画布。开箱即用非常好 原始SVG图 画布渲染 我很难弄明白:Canvas SVG到画布,填充Canvg行并删除背景行?,canvas,svg,canvg,Canvas,Svg,Canvg,我正在尝试使用将SVG转换为画布。开箱即用非常好 原始SVG图 画布渲染 我很难弄明白: 为什么要写“填写”一行?似乎从第一个点到最后一个点绘制了一条线,但我似乎在canvg库中找不到它 背景线元素被删除:下面是一个示例 有人有什么想法吗?很高兴提供更多信息。谢谢 如何应用css样式?您的svg有多个类吗? 这些在canvg中无法正常工作,请参阅此问题: 还有我附带的快速修复(测试不太好) /@第736行,替换为: //添加类样式 if(this.attribute('class').ha
有人有什么想法吗?很高兴提供更多信息。谢谢 如何应用css样式?您的svg有多个类吗? 这些在canvg中无法正常工作,请参阅此问题: 还有我附带的快速修复(测试不太好)
/@第736行,替换为:
//添加类样式
if(this.attribute('class').hasValue()){
//检查多个类
// ()
//使用css.big.green{fill:green;r:big;}
//我们不假设svg中的元素是排序的,所以我们检查
//.大.绿色和.绿色.大
//TODO:如果分类的话,可以减少这里的工作量。。
//生成所有可能的组合,无重复,但考虑排序
//组合2(['aa','bb','cc']))
//[“.aa”、“.aa.bb”、“.aa.bb.cc”、“.aa.cc”、“.aa.cc.bb”、“.bb.aa”、“.bb.aa.cc”、“.bb.cc.aa”、“.bb.cc.aa”、“.cc.aa.bb”、“.cc.bb”、“.cc.bb”、“.cc.bb.aa”、“.cc.aa”]
var comb2=功能组合(arr){
var fn=功能(活动、静止、全部){
如果(活动!=''{all.push(活动);}
对于(var i=0;i)绘制图表数据线的路径或多段线元素,是否有:fill=“无”是的。CSS是fill:none;stroke:black;stroke opacity:.25;形状渲染:crispEdge;
…但是删除fill:none;
并不能修复它。其他想法?谢谢@markE!你能帮我修改一下你的代码吗?
// @ line 736, replace with:
// add class styles
if (this.attribute('class').hasValue()) {
// check for multiple classes
// (<circle class="big green">)
// with css .big.green {fill:green;r:big;}
// we dont assume the elements in svg.Styles are sorted, so we check
// .big.green and .green.big
// TODO: if its sorted, one could reduce the work done here..
// generates all possible combination, no doublicates, but taking ordering into account
// comb2(['aa','bb', 'cc'])
// [".aa", ".aa.bb", ".aa.bb.cc", ".aa.cc", ".aa.cc.bb", ".bb", ".bb.aa", ".bb.aa.cc", ".bb.cc", ".bb.cc.aa", ".cc", ".cc.aa", ".cc.aa.bb", ".cc.bb", ".cc.bb.aa"]
var comb2 = function combinations(arr) {
var fn = function(active, rest, all) {
if (active != ''){all.push(active);}
for (var i=0; i<rest.length;++i){
fn(active + '.'+rest[i], [].concat(rest.slice(0,i), rest.slice(i+1)), all);
}
return all;
}
return fn('', arr, []);
}
var classes = svg.compressSpaces(this.attribute('class').value).split(' ');
classes = comb2(classes);
for (var j=0; j<classes.length; j++) {
styles = svg.Styles[classes[j]];
if (styles != null) {
for (var name in styles) {
this.styles[name] = styles[name];
}
}
styles = svg.Styles[node.nodeName+classes[j]];
if (styles != null) {
for (var name in styles) {
this.styles[name] = styles[name];
}
}
}
}