удаление нарисованного ранее. Возникли проблемы со стиранием
нарисованного изображения:
1)стирание в отличии от рисования съедает много ресурсов
2)при стирании не происходит фактического стирания и изменения высоты
и ширины контейнера
Рисование реализовал так:
создал прозрачную bitmapData и записал туда мувик(star_mc) который
хочу использовать как кисть.
bd = new BitmapData(star_mc.width, star_mc.height,true,0);
bd.draw(star_mc);
и при MOUSE_DOWN и MOUSE_MOVE создаю и добавляю в спрайт
drawingContainer Bitmap-ы на основе вышесозданной bd:
var bitmap:Bitmap = new Bitmap(bd);
drawingContainer.addChild(bitmap);
drawingContainer.blendMode = BlendMode.LAYER;
drawingContainer.cacheAsBitmap = true;
Стирание сделал так:
при MOUSE_DOWN и MOUSE_MOVE добавляю в drawingContainer спрайт с
blendMode = BlendMode.ERASE чтобы удалялось то, что под ним;
var eraserClip:Sprite = new Sprite();
eraserClip.blendMode = BlendMode.ERASE;
eraserClip.graphics.beginFill(0xffffff, 1);
eraserClip.graphics.drawEllipse(0, 0, 20, 20);
eraserClip.cacheAsBitmap = true;
drawingContainer.addChild(eraserClip);
В итоге - размеры контейнера не уменьшаются так как содержимое в нём
остаётся хоть и прозрачное,при
этом есть необходимость отрисовывать рамку вокруг этого рисунка.
По каким критериям её рисовать? Есть ли возможность вырезать из Bitmap
пикселы полностью вокруг какой -то точки если известны ёё координаты?
brush = new BitmapData(star_mc.width, star_mc.height,true,0);
brush.draw(star_mc);
Бумага (холст):
paper = new BitmapData(800, 600, true, 0);
addChild(new Bitmap(paper));
Рисуем:
var m:Matrix = new Matrix();
m.translate(mouseX, mouseY);
paper.draw(brush, m);
Стираем:
var m:Matrix = new Matrix();
m.translate(mouseX, mouseY);
paper.draw(brush, m, null, BlendMode.ERASE);