我正在尝试使用Path,Path.quadTo和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)
要添加一些上下文,重点是创建具有独特形状的拼图。如果这对我的最终目标有帮助的话。提前谢谢!
答案 0 :(得分:2)
我相信你正在寻找canvas.drawBitmap
答案 1 :(得分:0)
Portfoliobuilder,可用的颜色选择之一是透明的。也许如果您使用矩形位图来表示每个部分,但是在部分边框周围绘制透明,您可以获得不规则部分的外观,但仍然使用旨在用于矩形位图的android类?这可能会为您节省很多精力。你必须创建一个类来跟踪碎片的旋转方式,它们的距离以及哪一侧相匹配,但无论如何你都必须这样做。