1

画像にテキストを描画するコードを書きましたが、正常に動作していますが、ポートレイト モードで画像をキャプチャしていますが、ランドスケープ モードで画像をキャプチャするとアプリケーションがクラッシュし、例外 Java.lang.IllegalStateException: Immutable bitmap passed to Canvas が発生します。コンストラクタ

Canvas canvas = new Canvas(photo);
                    Typeface tf = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
                    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
                    paint.setStyle(Style.FILL);
                    paint.setTypeface(tf);
                    paint.setColor(Color.WHITE);
                    paint.setStrokeWidth(12); 
                    canvas.drawBitmap(photo, 0, 0, paint);
                    canvas.drawText(topaste, 10, 115, paint);
                    image.setImageBitmap(photo);
4

1 に答える 1

1

基本的に、キャンバスオブジェクトには描画するための新しいビットマップが必要です。不変の画像を渡すと、後の描画操作のポイントが無効になります。次のコードは、キャンバスの新しいビットマップを作成します。ユースケースに一致するように、幅と高さの変数を置き換える必要があります。

Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
Canvas canvas = new Canvas(photo);
于 2012-11-01T14:49:12.880 に答える