【发布时间】:2016-08-03 21:43:21
【问题描述】:
我正在做一个国际象棋应用程序,当我绘制棋盘的图块时,它们不会在(透明)背景中着色。基本上我想要的,它类似于 ImageView 中会发生的情况,它显示带有彩色背景的图像(具有透明背景)。
这是代码
private final Paint squareColor;
private Rect tileRect;
private Drawable pieceDrawable;
public Tile(final int col, final int row) {
this.col = col;
this.row = row;
this.squareColor = new Paint();
squareColor.setColor(isDark() ? Color.RED : Color.WHITE);
}
public void draw(final Canvas canvas) {
if(pieceDrawable != null) {
Bitmap image = ((BitmapDrawable) pieceDrawable).getBitmap();
ColorFilter filter = new LightingColorFilter(squareColor.getColor(), Color.TRANSPARENT);
squareColor.setColorFilter(filter);
canvas.drawBitmap(image, null, tileRect, squareColor);
} else {
canvas.drawRect(tileRect, squareColor);
}
}
这就是棋盘的样子(左图)
如果我在drawBitmap call 之前注释掉这两行,我会得到板作为正确的图像。
ColorFilter filter = new LightingColorFilter(squareColor.getColor(), Color.TRANSPARENT);
squareColor.setColorFilter(filter);
我的作品是具有透明背景的普通图像,其中没有在正方形中绘制作品。我怎样才能让这件作品在后面出现红色? (就像在具有相同背景颜色的图像或彩色视图上的 ImageView 上一样)
【问题讨论】:
标签: java android canvas bitmap background-color