如何将位图设置为canvas?
How to set bitmap to canvas?
我正在尝试使用路径、Path.quadTo 和 Canvas 创建一个独特的形状,然后将位图传递给这个独特的形状。这个想法是方形位图将转换为 canvas 的独特形状。我不确定这是否可能,但这是我想要完成的,这就是我解释将位图设置为 canvas 的文档的方式。当我将位图设置为 canvas 时收到错误 "UnsupportedOperationException"。位图在我的资源文件夹中。我错过了什么?
@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.setBitmap(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.drawBitmap
Portfoliobuilder,其中一种可用的油漆颜色选择是透明的。也许如果你使用一个矩形位图来表示每一块,但在块边界周围涂上透明,你可以获得不规则块的外观,但仍然使用用于矩形的 android classes位图?这可能会节省您的很多精力。您将必须创建一个 class 来跟踪棋子的旋转方式、它们之间的距离以及匹配的边,但无论如何您都必须这样做。
我正在尝试使用路径、Path.quadTo 和 Canvas 创建一个独特的形状,然后将位图传递给这个独特的形状。这个想法是方形位图将转换为 canvas 的独特形状。我不确定这是否可能,但这是我想要完成的,这就是我解释将位图设置为 canvas 的文档的方式。当我将位图设置为 canvas 时收到错误 "UnsupportedOperationException"。位图在我的资源文件夹中。我错过了什么?
@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.setBitmap(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.drawBitmap
Portfoliobuilder,其中一种可用的油漆颜色选择是透明的。也许如果你使用一个矩形位图来表示每一块,但在块边界周围涂上透明,你可以获得不规则块的外观,但仍然使用用于矩形的 android classes位图?这可能会节省您的很多精力。您将必须创建一个 class 来跟踪棋子的旋转方式、它们之间的距离以及匹配的边,但无论如何您都必须这样做。