我试图在Android中制作一个Minesweeper游戏来练习使用Canvas绘制图像。
我目前正在使用drawBitmap(image,x,y,antialiasPaint)但是,当我调整电路板大小并且瓷砖变得如此之小时,会发生这种情况:
你可以看到瓷砖之间有时出现的黑线...... 我使用此代码绘制每个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);
}
我可以使用其他解决方案来解决这个问题吗?