Как работает 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 за примерами использования.

Другие вопросы по тегам