Как работает fillStyle в bs-webapi Canvas2d
Мне интересно, как создать и установить стиль заливки с помощью интерфейса bs-webapi и Canvas2d в ReasonML.
Я думаю, что мне может понадобиться следующее определение:
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 `;'.
1 ответ
Вам нужна функция setFillStyle
:
Canvas2d.setFillStyle(ctx, String, "rgba(0,255,255,255)");
Это было переименовано из fillStyle
давным-давно, потому что тогда не было получателя, и принято называть получателя fillStyle
и сеттер setFillStyle
. В то же время он был сделан для поддержки градиентов и узоров.
Способ setFillStyle
Теперь работает то, что второй аргумент определяет тип третьего. Если вы пройдетеString
как второй аргумент, третий должен быть string
. Если вы пройдетеGradient
это должно быть gradient
, который вы можете получить из createLinearGradient
или createRadialGradient
. И наконец вы можете пройтиPattern
, что требует, чтобы третий аргумент был pattern
получен из createPattern
.
В общем, вам следует обратиться к тестовому файлу Canvas2d за примерами использования.