проблема рендеринга холста после применения фильтров с событиями слайдера jquery-ui - PullRequest
0 голосов
/ 06 февраля 2019

Я переношу приложение с fabricjs 1.7 на 2.4.6 (последняя версия)

У меня есть элемент canvas, привязанный к fabricjs и различным ползункам jquery-ui. Элемент на canvas имеет набор из 2 фильтров.

В случае события слайдера jquery-ui я изменяю значение фильтра (сверточный фильтр и фильтр яркости), применяю фильтры и отрисовываю элементы (через API-интерфейс fabricjs).Однако изменение не отражается сразу.

т.е. очевидно, что если я щелкну где-нибудь на слайдере, изображение не изменится.Но если я перемещаю элемент с помощью мыши или выполняю какую-либо другую операцию, которая не включает применение фильтра, например, изменение альфа-канала, сжатие, увеличение или вращение, тогда элемент обновляется, и я вижу эффект применения фильтра.Если я щелкну где-нибудь еще в ползунке, я увижу предыдущий фильтр значений, но не последний.

Этого не произошло с fabricjs 1.7.

Я пробовал различные события jquery-и слайдер.Я подозреваю, что использование jquery-ui по какой-то причине препятствует обновлению холста ...

function setImageBrightness(imagen, brightness) {
    imagen.filters[1]['brightness'] = brightness;
    imagen.applyFilters();
    canvas.renderAll();
}
$("#brilloIzquierdo").slider({
        min : -255,
        max : 255
});
$("#brilloIzquierdo").on("slide", function(event, ui) {
        brillo = ui.value;
        $("#vBrilloIzq").text(brillo);
        setImageBrightness(canvas.item(idxIzquierdo), brillo);
});

Когда я щелкаю где-то на слайдере, холст должен быть немедленно обновлен с применением нового фильтра.

...