繁体   English   中英

在Android / Java中使用画布在图像上绘制

[英]Draw with a Canvas over an Image in Android/Java

我尝试在Canvas上绘制,背景是Android中加载的图片。 没有backgroundimage就可以正常工作:

background = (ImageView)view.findViewById(R.id.Background);
Bitmap bitmap = Bitmap.createBitmap(canvasSize,canvasSize,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
background.setImageBitmap(bitmap);

我将画布传递给另一个类并在上面绘画。 很好

但是当我这样做时:

background = (ImageView)view.findViewById(R.id.Background);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); //Just to test

canvas = new Canvas(bitmap); 
//or this
canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));

background.setImageBitmap(bitmap);

它不会覆盖图像,所以您看不到重点。 这是我使用此画布绘制的另一个类的代码:

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawCircle( (float)sObject.getSideGforce()*mult+add, 
(float)sObject.getFrontRearGforce()*mult+add, 15*V.LOGICAL_DENSITY, dot);                                                                                                                          

我的目标是创建一个具有自定义尺寸的画布,该画布具有可作为背景绘制背景的图像。 它是Gforce显示器,因此图像将是带有数字的一些圆圈,并且画布将在其上绘制一个点,这样您就可以看到要拉动的G数。 就像我已经说过的那样,在没有背景的情况下它可以完美运行。 而且,我不想每次重新定位点时都重新绘制背景。 因此背景应该是静态的,画布上的点应该是动态的(在100hz处)。 提前致谢。

解决方案:可以使用此代码。

view.setBackgroundResource(R.drawable.ic_launcher);

我只需要设置我的视图的背景。 它将图像拉伸到我片段的大小,但这没关系。

BitmapFactory.decodeResource()创建不可变的Bitmap,因此有不能更改它的原因。

您需要创建一个位图作为工作代码,然后使用canvas.drawBitmap()在后台绘制所需的位图。 然后画你想要的东西。

编辑:或使用setBackground()作为背景,仅在画布上绘制点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM