Как нарисовать круг внутри растрового холста, используя PaperJs
Я использую paperjs, чтобы создать растр и сделать несколько рисунков поверх изображения. Но я не могу понять, как рисовать круги поверх моих изображений после преобразования моего изображения в растр. Мое приложение имеет несколько изображений на одной странице, и мне придется делать рисунки на всех изображениях. Ниже приведен код, который я использую для преобразования изображения Src в растр для рисования поверх изображений.
for(i=0;i< imgLength;i++){
dir = FILE_DIR+"/"+imgJPGList[i];
imgid = imgJPGList[i].substr(0, imgJPGList[i].indexOf('.'));
midproj = new paper.Project(paper.view);
var raster = new paper.Raster();
raster.onLoad = function() {
console.log('Successfully loaded image!');
}
raster.source = dir;
document.getElementById('imgID').appendChild(raster.canvas);//imgID is my DIV
$("#imgID").append($("<br/>"));
circle = new paper.Path.Circle(new paper.Point(80, 50), 35);
circle.strokeColor = 'red';
//paper.setup(raster.canvas);
//paper.view.draw();
}
Я пытаюсь добиться чего-то похожего на приведенную ниже ссылку.
1 ответ
Я точно не знаю, какие у вас проблемы (было бы неплохо включить один или два симптома), но могу предложить несколько советов. Кстати, я не знал, что для растров было событие onLoad - спасибо.
Я никогда не использовал raster.canvas. В документации говорится, что ссылка на нее заставляет бумагу создавать холст. Таким образом, создается второй холст, отличный от того, который создает или использует paper.Project.
Я не уверен, что делает paper.view к paper.Project. paper.view - это представление текущего активного проекта - я не могу сказать, что это из фрагмента кода.
Если бы я кодировал это, это выглядело бы примерно так (метакод, так что извините за ошибки):
var canvas = document.createElement("canvas");
// do whatever attribute setting needs to be done for canvas.
document.getElementById("#mydiv").appendChild(canvas);
paper.setup(canvas);
// now create a raster in the default, current layer of the paper project
var raster = new paper.Raster();
raster.source = "some URL";
// now create a new layer. it becomes the active layer for drawing
var layer = new paper.Layer();
// draw circles and other stuff. they go on the new layer.
Порядок некоторых вещей может быть изменен. Вставка холста может быть инициирована при загрузке изображения и т. Д.
Но, учитывая информацию, которая у меня есть, это мой ответ.