Javascript 文本';在Konva中,“填充”颜色被“笔划”覆盖
我有一些Konva文本节点,其Javascript 文本';在Konva中,“填充”颜色被“笔划”覆盖,javascript,konvajs,konva,konvajs-reactjs,Javascript,Konvajs,Konva,Konvajs Reactjs,我有一些Konva文本节点,其fill属性设置为黑色,stroke设置为其他颜色。 在我的画布上,它看起来和预期的一样。当我将画布转换为base64图像以将其作为图像文件下载时,会出现问题-在这种情况下,下载的图像如下面的屏幕截图所示: (画布在左侧,右侧是下载的图像) 如您所见,笔划颜色也应用于文本自身的颜色 我创建了一个Codesandbox,其中包含一个文本节点,该节点具有与我的环境中相同的属性,下面是该节点的创建方式: const text = new Konva.Text({
fill
属性设置为黑色,stroke
设置为其他颜色。
在我的画布上,它看起来和预期的一样。当我将画布转换为base64图像以将其作为图像文件下载时,会出现问题-在这种情况下,下载的图像如下面的屏幕截图所示:
(画布在左侧,右侧是下载的图像)
如您所见,笔划颜色也应用于文本自身的颜色
我创建了一个Codesandbox,其中包含一个文本节点,该节点具有与我的环境中相同的属性,下面是该节点的创建方式:
const text = new Konva.Text({
x: 26.330053300533024,
y: 128,
text: "Add a body text",
defaultText: "Add a body text",
fontSize: 22,
fontFamily: "Montserrat",
draggable: true,
name: "text",
fontStyle: "300",
id: "textkgrsl68w",
is_settings: true,
wrap: "word",
padding: 5,
fill: "black",
opacity: 1,
isPremium: false,
width: 183.5,
visible: true,
rotation: 0,
scaleX: 1,
scaleY: 1,
offsetX: 0,
offsetY: 0,
skewX: 0,
skewY: 0,
stroke: "rgba(255,0,0,1)",
strokeWidth: 3.75
});
正如您所看到的,它具有相同(不正确)的外观-没有内联颜色。我在Codesandbox中玩了fontSize
,当我将其设置为非常大的值(如100
)时,文本的内联颜色变得可见。
我认为这可能是一些比率问题,但正如我们在屏幕截图上看到的,文本的大小在画布和下载的图像中都是相似的
这是如何解决的,也许还应该设置一些额外的属性
konva
:7.1.4
react konva
:16.12.0-0
更新:
您可以使用text.fillAfterStrokenabled(true)代码>在笔划上绘制填充
旧答案:
默认情况下,Konva
是先绘制填充,然后绘制笔划。因此,它将是一个文本本身,然后围绕它笔划(这将超出填充部分)
可能一天的Konva将支持不同的订单,但目前konva@7.1.4
不能这样做
作为解决方法,只需使用两个Konva.Text
实例。第一个用于笔划,第二个用于填充