Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文本';在Konva中,“填充”颜色被“笔划”覆盖_Javascript_Konvajs_Konva_Konvajs Reactjs - Fatal编程技术网

Javascript 文本';在Konva中,“填充”颜色被“笔划”覆盖

Javascript 文本';在Konva中,“填充”颜色被“笔划”覆盖,javascript,konvajs,konva,konvajs-reactjs,Javascript,Konvajs,Konva,Konvajs Reactjs,我有一些Konva文本节点,其fill属性设置为黑色,stroke设置为其他颜色。 在我的画布上,它看起来和预期的一样。当我将画布转换为base64图像以将其作为图像文件下载时,会出现问题-在这种情况下,下载的图像如下面的屏幕截图所示: (画布在左侧,右侧是下载的图像) 如您所见,笔划颜色也应用于文本自身的颜色 我创建了一个Codesandbox,其中包含一个文本节点,该节点具有与我的环境中相同的属性,下面是该节点的创建方式: const text = new Konva.Text({

我有一些Konva文本节点,其
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
实例。第一个用于笔划,第二个用于填充