当前位置: 首页 > 知识库问答 >
问题:

Androidcanvas.draw位图()以一种颜色绘制整个位图

陈野
2023-03-14

我正在做一个简单的绘画程序。

我正在绘制一个自定义位图,然后用onDraw方法将这个位图绘制到画布上。

自定义位图和画布创建:

bitmap = Bitmap.createBitmap(w - 150,h,Bitmap.Config.ALPHA_8);
canvasa  = new Canvas(bitmap);

当有人触摸屏幕时,会画一个圆圈:

canvasa.drawCircle(x, y, 10, paint);

这很好,但每次在屏幕上绘制位图时,每个圆都有相同的颜色(绘制当前颜色):

@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap,0,0, paint);
super.onDraw(canvas);
}

所以如果我有一个红色的圆圈,将颜色更改为蓝色并绘制另一个圆圈,位图中的两个圆圈都是蓝色的。为什么会这样?我该如何解决这个问题?

共有1个答案

朱欣荣
2023-03-14

对于您正在做的事情,在绘制时将绘制颜色传递到画布是没有意义的。这是绘制的当前颜色在画布上的显示方式。如果您检查您看到的文档,这可能是空的。

正如在评论中指出的那样,位图的配置对于您想要做的事情是不正确的。我建议您在这里更可能需要的是ARGB_8888,因此:

Bitmap.createBitmap(w - 150, h, Bitmap.Config.ARGB_8888);

以及:

canvas.drawBitmap(bitmap, 0, 0, null);
 类似资料:
  • 问题内容: 这是我在stackoverflow.com上遇到的第一个问题,所以请原谅我做错了什么。 我想创建一个基本上像进度条的圆圈。现在,我想通过一些代码设置百分比。 我想要实现的是:https : //raw.github.com/psud/Melde-App/master/res/drawable- hdpi/circlemiddle.png 我的问题: 无法使用两种颜色的圆圈工作(已经在论

  • 我正在尝试将一个十六进制值转换为一个int,这样我就可以创建一个新的彩色绘图。我不确定这是否可能,但根据文档,这是应该的。它很明显地要求

  • 我现在正在做一个游戏,遇到了一些我想不出来的事情。我有一系列的ImageButton,我正在迭代,并在每个按钮上绘制位图。位图本身绘制得很好,但是我也想在这些位图上绘制矩形。 相关代码(如果这还不够,我可以发布更多): 位图本身出现在按钮上,但是我想要绘制的矩形没有被绘制。

  • 问题内容: 我目前有一个迷宫游戏,它绘制一个5 x 5的正方形(占用屏幕的宽度并将其均匀分割)。然后,对于每个使用x和y坐标的框,我使用drawRect绘制彩色背景。 我遇到的问题是我现在需要在同一位置绘制图像,因此需要替换当前的纯背景色填充。 这是我当前用于drawRect的代码(一些示例): 然后,我还需要为画布中的所有其他正方形实现背景图像。该背景将在其顶部绘制简单的1px黑色线条,当前代码

  • 问题内容: 我正在尝试将十六进制值转换为int,以便创建新的可绘制颜色。我不确定是否可以,但是根据文档,应该可以。它明确地要求 公共ColorDrawable(int颜色) 在API级别1中添加。创建具有指定颜色的新ColorDrawable。 参数 color 绘制的颜色。 因此,我的代码无法正常工作,因为我收到一个无效的int:“ FF6666”错误。有任何想法吗? 问题答案: 因为您在谈论十

  • 以下是MyBitmapUtils.GetBitmapScaledToFitWidth: 我知道这是怎么发生的。这是因为图像的高度大于2048,而在Android系统中创建一个大于2048*2048的位图会导致OOM(奇怪的是,我的logcat没有报告这个错误)