Android 如何将位图设置为画布?
我正在尝试使用Path、Path.quadTo和Canvas创建一个独特的形状,然后将位图传递给这个独特的形状。其想法是,方形位图将转换为画布的独特形状。我不确定这是否可行,但这正是我试图实现的目标,也是我解释将位图设置为画布的文档的方式。当我将位图设置到画布时,收到一个错误“UnsupportedOperationException”。位图在我的资源文件夹中。我错过了什么Android 如何将位图设置为画布?,android,canvas,android-canvas,Android,Canvas,Android Canvas,我正在尝试使用Path、Path.quadTo和Canvas创建一个独特的形状,然后将位图传递给这个独特的形状。其想法是,方形位图将转换为画布的独特形状。我不确定这是否可行,但这正是我试图实现的目标,也是我解释将位图设置为画布的文档的方式。当我将位图设置到画布时,收到一个错误“UnsupportedOperationException”。位图在我的资源文件夹中。我错过了什么 @override protected void onDraw(Canvas canvas) {
@override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// get bitmap
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.squareImage);
// set up Paint attributes
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5.of);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setAntiAlias(true);
// set up path
Path path = new Path();
path.moveTo(x1, y1)
// apply curve with quadTo function
final float x2 = (x1 + x3)/2
final float y2 = (y1 + y3)/2
path.quadTo(x2, y2, x, y);
// shape the canvas according to the path attributes
canvas.drawPath(path, paint);
}
/* Note: at this point I have an unique shape. I now want to apply an image to this shape */
// reference canvas passed into the onDraw() method and set to bitmap
// canvas.setBitmap(mBitmap);
canvas.setbit映射(mBitmap)将导致错误
02-17 08:43:27.168: E/AndroidRuntime(3438): java.lang.UnsupportedOperationException
02-17 08:43:27.168: E/AndroidRuntime(3438): at android.view.HardwareCanvas.setBitmap(HardwareCanvas.java:39)
02-17 08:43:27.168: E/AndroidRuntime(3438): at com.example.puzzledemo.activity.PathExample$PathView.onDraw(PathExample.java:90)
要添加一些上下文,其要点是创建具有独特形状的拼图块。如果这对我的最终目标有帮助的话。提前谢谢 我相信您正在寻找canvas.drawBitmapPortfoliobuilder,可用的油漆颜色选择之一是透明的。如果您使用矩形位图来表示每个片段,但在片段边框周围以透明方式绘制,您可能会获得不规则片段的外观,但仍然使用用于矩形位图的android类?这可能会为你节省很多精力。您必须创建一个类来跟踪各个部分是如何旋转的、它们之间的距离以及哪些边匹配,但无论如何您都必须这样做。您是要将画布上的图片保存为位图还是将背景图像放在画布上?我有一些方形图像,希望将其转换为拼图。所以我试着在画布上放一个背景图片。谢谢你的回答。你能告诉我为什么你认为这个函数是我所需要的,而不是我一直在努力实现的吗?也许可以添加一些代码示例,说明如何在我的上下文中使用它?我以为canvas.drawBitmap是用来画矩形/正方形的,而不是像拼图拼图一样的独特形状。我的建议是将位图绘制为矩形并应用遮罩。这是最有可能解决您问题的方法。谢谢。我知道你已经有了矩形位图,关键是你可以应用一个遮罩,然后将矩形“切割”到你的拼图块的形状上。如果要将形状直接绘制到位图,则需要使用位图创建一个新画布(即画布c=新画布(myBitmap);)并在该画布上绘制。这就是为什么你要得到你的“UnsupportedOperationException”,你要把位图设置到画布上,我想画到屏幕上。你不能那样做。现在这已经很清楚了@Solarnum。谢谢,你的面膜解决方案有效。我现在只需要一些面具:-)。干杯