Я использую createJS для маскировки изображения, и маска будет отрисовываться пользователем.
Поскольку маска будет обновляться при перетаскивании пользователем, я использовал mouseAlphaMaskFilter с кэшированием изображения для достижения эффекта маски.К сожалению, это приводит к неожиданному.Картинка покрыта цветом обводки, и картинка видна только тогда, когда цвет обводки является полупрозрачным.
Вот текущее тестирование (Пожалуйста, перетащите на холст, чтобы увидеть его результат)
var stage = new createjs.Stage("canvas");
var shape, bmp, oldX, oldY, size, color;
var stageWidth = 550;
var stageHeight = 400;
mycolor = createjs.Graphics.getRGB(255, 255, 255, .5);
shape = new createjs.Shape();
bmp = new createjs.Bitmap("https://ocdn.eu/pulscms-transforms/1/dZtktkqTURBXy8xNTI0OTU1NWRlNDMyZDNiMjcwZDY2YjVlODJjNDRiNC5qcGVnkZUCzQMWAMLD");
shape.cache(0,0,550,400);
bmp.filters = [new createjs.AlphaMaskFilter(shape.cacheCanvas)];
bmp.cache(0,0,550,400);
stage.on("stagemousemove", function (evt) {
if (oldX) {
shape.graphics.beginStroke(color)
.setStrokeStyle(size, "round")
.moveTo(oldX, oldY)
.lineTo(evt.stageX, evt.stageY);
}
oldX = evt.stageX;
oldY = evt.stageY;
shape.updateCache();
bmp.updateCache();
stage.update();
})
stage.on("stagemouseup", function (event) {
color = mycolor;
});
stage.on("stagemousedown", function (event) {
color = mycolor;
size = 20;
});
stage.on("stagemouseup", function (event) {
color = "";
});
stage.addChild(bmp);
stage.addChild(shape);
stage.update();
Ожидаемый результат в виде обычной маски от createJS (Но этот метод bmp.mask = shape
работает только при неизменной маске.)
Извините за мой плохойобъяснение выше.Я благодарен, если какая-либо помощь может привести меня в правильном направлении.