Android 如何将位图设置为画布?

Android 如何将位图设置为画布?,android,canvas,android-canvas,Android,Canvas,Android Canvas,我正在尝试使用Path、Path.quadTo和Canvas创建一个独特的形状,然后将位图传递给这个独特的形状。其想法是,方形位图将转换为画布的独特形状。我不确定这是否可行,但这正是我试图实现的目标,也是我解释将位图设置为画布的文档的方式。当我将位图设置到画布时,收到一个错误“UnsupportedOperationException”。位图在我的资源文件夹中。我错过了什么 @override protected void onDraw(Canvas canvas) {

我正在尝试使用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.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.drawBitmap

Portfoliobuilder,可用的油漆颜色选择之一是透明的。如果您使用矩形位图来表示每个片段,但在片段边框周围以透明方式绘制,您可能会获得不规则片段的外观,但仍然使用用于矩形位图的android类?这可能会为你节省很多精力。您必须创建一个类来跟踪各个部分是如何旋转的、它们之间的距离以及哪些边匹配,但无论如何您都必须这样做。

您是要将画布上的图片保存为位图还是将背景图像放在画布上?我有一些方形图像,希望将其转换为拼图。所以我试着在画布上放一个背景图片。谢谢你的回答。你能告诉我为什么你认为这个函数是我所需要的,而不是我一直在努力实现的吗?也许可以添加一些代码示例,说明如何在我的上下文中使用它?我以为canvas.drawBitmap是用来画矩形/正方形的,而不是像拼图拼图一样的独特形状。我的建议是将位图绘制为矩形并应用遮罩。这是最有可能解决您问题的方法。谢谢。我知道你已经有了矩形位图,关键是你可以应用一个遮罩,然后将矩形“切割”到你的拼图块的形状上。如果要将形状直接绘制到位图,则需要使用位图创建一个新画布(即画布c=新画布(myBitmap);)并在该画布上绘制。这就是为什么你要得到你的“UnsupportedOperationException”,你要把位图设置到画布上,我想画到屏幕上。你不能那样做。现在这已经很清楚了@Solarnum。谢谢,你的面膜解决方案有效。我现在只需要一些面具:-)。干杯