ecomfe / zrender

A lightweight graphic library providing 2d draw for Apache ECharts

Home Page:https://ecomfe.github.io/zrender-doc/public/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

文字不支持渐变色

Albertiy opened this issue · comments

有办法让文字有渐变色吗?

以下是测试代码,效果是只有 Rect 支持线性和径向渐变填充,Text 不支持,填充黑色:

var zr = zrender.init(document.getElementById('canvas'));

// var gradient = new zrender.LinearGradient(0, 0, 1, 0, [
//     { offset: 0, color: 'red' },
//     { offset: 0.25, color: 'orange' },
//     { offset: 0.5, color: 'yellow' },
//     { offset: 0.75, color: 'green' },
//     { offset: 1, color: 'blue' }
// ], false);

var gradient = new zrender.RadialGradient(
    0.5,
    0.5,
    0.5, [
    { offset: 0, color: 'red' },
    { offset: 0.25, color: 'orange' },
    { offset: 0.5, color: 'yellow' },
    { offset: 0.75, color: 'green' },
    { offset: 1, color: 'blue' }
]

)

var text = new zrender.Text({
    style: {
        text: 'Hello World',
        // fill: 'red',
        textBorderColor: gradient,
        fontSize: 50,
        fontWeight: 600,
        stroke: "red",
        lineWidth: 10,
    },
    x: 100,
    y: 100,
    draggable: true,
});

zr.add(text);

var rect = new zrender.Rect({
    shape: {
        x: 0,
        y: 0,
        width: 100,
        height: 100,
    },
    style: {
        fill: gradient,
        stroke: "#000",
        lineWidth: 10,
    },
    draggable: true,
});

zr.add(rect)

zr.on('error', function (e) {
    console.error(e);
});

Canvas 的文字无法支持渐变色,所以应该 ZRender 也实现不了

Canvas 的文字无法支持渐变色,所以应该 ZRender 也实现不了

我测试了下,现在的canvas应该支持的:

ctx.font = "48px serif";
ctx.textBaseline = "hanging";
var gradient=ctx.createLinearGradient(0, 0, canvas.width,0);
gradient.addColorStop("0", "orange");
gradient.addColorStop("0.5", "blue");
gradient.addColorStop("1.0", "red");
ctx.fillStyle = gradient;
ctx.fillText("have a nice day ", 10, 100);

image

哦这样的话技术上是可行的,但 ZRender 主要就是为 Apache ECharts 服务的,一般是图表里面有强需求了才会在 ZRender 层面支持

好的,谢谢,希望后面能有这个功能吧