缩放画布位图时出现黑线

时间:2015-12-28 11:08:28

标签: java android canvas resize minesweeper

我试图在Android中制作一个Minesweeper游戏来练习使用Canvas绘制图像。

我目前正在使用drawBitmap(image,x,y,antialiasPaint)但是,当我调整电路板大小并且瓷砖变得如此之小时,会发生这种情况:

Image

你可以看到瓷砖之间有时出现的黑线...... 我使用此代码绘制每个Tile对象。

/**
*   @param canvas Canvas directly from View's @Override draw(Canvas canvas)
*   @param parentX Parent X position
*   @param parentY Parent Y position
*/
public void draw(Canvas canvas, float parentX, float parentY){
    canvas.drawBitmap(base,parentX+x,parentY+y, paint);
}

使用像this这样的bufferedBitmap可以解决这个问题,但是它的性能会比提升它的速度慢很多......

也许我做得不好?我是这样做的:

private Canvas c = new Canvas();
private Bitmap bufferedImage;
public void zoom(float z){
    this.scale *= z;
    this.scale = Math.max(0.3f, Math.min(scale, 1f));
    this.vWidthScaled = vWidth/scale;
    this.vHeightScaled = vHeight/scale;
    bufferedImage = Bitmap.createBitmap((int)vWidthScaled, (int)vHeightScaled, Bitmap.Config.ARGB_8888);
}

@Override
public void draw(Canvas canvas){
    c.setBitmap(bufferedImage);
    grid.draw(c, vWidthScaled, vHeightScaled);

    canvas.drawColor(TileStyle.getInstance().getBackgroundColor());
    canvas.scale(scale, scale);
    canvas.drawBitmap(bufferedImage,0,0,null);
    canvas.scale(1/scale, 1/scale);
}

我可以使用其他解决方案来解决这个问题吗?

0 个答案:

没有答案