Paper.js 子栅格添加在矩形后面而不是前面

Paper.js Subraster Added Behind Rectangle Instead of in Front

在此Paper.jsSketch, selecting an area of the Mona Lisa raster makes a whiteout Rectangle of the area in place, as well as a generating a subraster的区域。首先添加白色矩形,然后添加子栅格。但是,正如您在草图中看到的那样,白色矩形仍然在顶部。通过注释掉 whiteout 矩形块并取消注释最后一行来测试它,以查看子栅格确实生成了。

在这种情况下,可以通过调用 bringToFront() 来解决这个问题,但这仍然不能解释为什么子栅格最终会出现在白色矩形后面,尽管它是最后添加的。这种行为的原因是什么?这是什么逻辑?提前致谢。

如果您查看 getSubRaster() 函数,您会发现它将返回的栅格直接插入到创建栅格对象的上方。

function() {
  var rect = Rectangle.read(arguments),
    raster = new Raster(Item.NO_INSERT);
  raster.setImage(this.getSubCanvas(rect));
  raster.translate(rect.getCenter().subtract(this.getSize().divide(2)));
  raster._matrix.preConcatenate(this._matrix);
  raster.insertAbove(this);
  return raster;
}