0

我想知道如何在 ReasonML 中使用 bs-webapi 和 Canvas2d 接口创建和设置填充样式。

我认为我可能需要的定义是这样的:

let fillStyle = (ctx: t) =>
  ctx |> fillStyle |> reifyStyle;

但我很难理解它。

我以前曾将此项目用作示例的来源,但我认为自从该项目被创作以来,bs-webapi 已经发生了变化。至少以示例为模型的以下行:

Canvas2d.fillStyle(ctx, "rgba(0,255,255,255)");

给我这个错误:

Error: This function has type
         Webapi.Canvas.Canvas2d.t => (Webapi.Canvas.Canvas2d.style('a), 'a)
       It is applied to too many arguments; maybe you forgot a `;'.
4

1 回答 1

1

你想要的功能是setFillStyle

Canvas2d.setFillStyle(ctx, String, "rgba(0,255,255,255)");

这是fillStyle很久以前重命名的,因为当时没有 getter 并且约定是命名 getterfillStyle和 setter setFillStyle。同时它被用来支持渐变和图案。

现在的工作方式setFillStyle是第二个参数确定第三个参数的类型。如果您String作为第二个参数传递,则第三个参数必须是string. 如果你通过了,Gradient它必须是 a gradient,你可以从createLinearGradientor得到它createRadialGradient。最后你可以通过Pattern,这要求第三个参数是从pattern获得的createPattern

一般来说,您应该参考Canvas2d 测试文件以获取使用示例。

于 2019-10-29T09:38:12.977 回答