我正在做一个国际象棋应用程序,当我绘制棋盘的瓷砖时,它们在(透明)背景中不会变色。基本上,我想要的是,它类似于在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);
}
}
这就是棋盘的样子(左图)
如果我在绘制Bitmap call
之前注释掉这2行,我就会得到正确的图像。
ColorFilter filter = new LightingColorFilter(squareColor.getColor(), Color.TRANSPARENT);
squareColor.setColorFilter(filter);
我的作品是带有透明背景的普通图像,作品没有画在正方形中。我怎么能有作品背后的红色呢?(就像带有背景色的相同图像的ImageView或彩色视图一样)
只有当<code>pieceDrawable<code>为空时,才绘制背景。将代码更改为:
public void draw(final Canvas canvas) {
canvas.drawRect(tileRect, squareColor); // Draws background no matter if place is empty.
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);
}
}
我试图通过扩展LineChart类并重写onDraw方法,在LineChart中绘制界限线之间的颜色。我在https://github.com/philjay/mpandroidchart/issues/485中这样做,其中彩色矩形简单地绘制在画布上: 使用上面的代码,我可以绘制彩色矩形作为折线图数据后面的背景,如下所示 然而,当我在y轴上滚动时,矩形将“溢出”到绘制x轴标签的区域,如图所示 我应
我正在运行Ubuntu 16.04。在Android Studio上,当我试图在模拟器中运行我的应用程序时,我得到以下错误: 致命的例外:主要过程:项目名称在这里,PID: 2528java.lang.运行时间例外:画布:试图绘制太大(216090000bytes)位图。在android.view.DisplayListCanvas.throw如果不能绘制(DisplayListCanvas.ja
问题内容: 我如何告诉paint方法仅在JPanel上而不是在整个JFrame上绘制背景。我的JFrame大小大于JPanel。当我尝试为JPanel绘制网格背景时,网格似乎遍及整个JFrame,而不仅仅是JPanel。 以下是部分代码: 问题答案: camickr是正确的。所以: 您需要严格将工程图与不同组件分开。Swing已经在管理子组件,因此绝对不需要在Panel的Frame中实现图形(调用
我试图使用矩阵旋转位图。然后我试着把它画在画布上。但它就这么消失了! 下面是我的代码: } 我已经删除了缩放画布和事件监听器等的函数。使代码小而易读。 我周期性地调用setDirection方法,但是在它被调用之后,“userImage”drawable就消失了。有人能告诉我这里出了什么问题吗。。 谢谢
我编写了这段代码,可以在JavaFX画布上绘制。它可以很好地工作,但我不知道如何重新绘制画布(比如在Swing中),以便在新画布上重新开始绘制。这是我的代码,非常感谢你的帮助!马里奥