我目前正在编写一个小型图像编辑器来学习一些 javascript。其中一个功能显然是绘图工具。当使用它时,我将这些像素绘制到实际画布顶部的另一个画布上,然后当释放鼠标时,我将像素从顶部画布复制到底层画布。
这是用于将绘制的像素复制到底层画布的代码。
this.applySketch = function() {
this.revertStack.push(this.ctx.getImageData(0, 0, this.width, this.height));
var real = this.ctx.getImageData(0, 0, this.width, this.height);
var sketch = this.sketchctx.getImageData(0, 0, this.width, this.height);
for(var i = 0; i < sketch.data.length; i += 4) {
// check the alpha value to decide if to copy to the real canvas
if(sketch.data[i+3] > 0) {
real.data[i] = sketch.data[i];
real.data[i+1] = sketch.data[i+1];
real.data[i+2] = sketch.data[i+2];
real.data[i+3] = sketch.data[i+3];
}
}
this.ctx.putImageData(real, 0, 0);
this.sketchctx.clearRect(0, 0, this.width, this.height);
}
我遇到的问题是像素被复制到另一层时看起来不一样。相反,无论我正在复制什么,周围都有一个白色像素的薄轮廓。
鼠标释放前(当像素位于顶层时) http://i.imgur.com/xHvN1iF.jpg
鼠标释放后(当它们被复制时) http://i.imgur.com/P0sdybs.jpg
我真的不知道这里发生了什么,因为它看起来很简单。有什么抗锯齿功能吗?
谢谢