キャンバスにイメージを描画するにはどうすればよいですか?キャンバス上の描画可能なイメージ
答えて
あなたはビットマップとしてあなたのイメージをロードする必要があり、この
Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
を試してみてください。
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
その後ビットマップが変更可能にし、その上にキャンバスを作成します。
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
あなたはその後、キャンバスに描画することができます。
私の.pngが大きければ、読み込まれた後にカットされます?すなわち、私はドン; tはそれをトリミングしたい。それは画面よりも大きくなる可能性があります。次に、ズームと移動を可能にしようとします。どうすればいいですか?そんなにありがとう! –
@perfectm1ng BitmapRegionDecoderを使って見てください。大きな画像の部分的な読み込みが可能です。したがって、現在レンダリングしているイメージの一部だけをロードすることができます。 –
私は同じ問題を抱えています。コードを使用しています Canvas cs = new Canvas(ビットマップ); リソースres = getResources(); ビットマップbitmapx = BitmapFactory.decodeResource(res、R.drawable.overlay_good_full); ビットマップbitmapxx = BitmapFactory.decodeResource(res、R.drawable.overlay_bad_full); if(text.equals( "Good")) { cs.drawBitmap(bitmapx、0、0、tPaint); } else { cs.drawBitmap(bitmapxx、0、0、tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
onDrawで新しいペイントオブジェクトを作成すると、パフォーマンスが悪くなります –
大丈夫です...回答が更新されました – user1140237
私はあなたのコード(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29)などのビットマップとしてイメージをロードする必要があることはよく分からない はDrawable.draw(Canvas c)
を使用しています。
キャンバスにDrawableのを描画するための良い方法は、それを自分でデコードするが、そうするようにシステムにそれを残していない。
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
これはドロウアブルのすべての種類だけではないビットマップで動作します。また、サイズが変更された場合に限り、同じドロアブルを再利用することもできます。
キャンバスアプローチでアニメーションリスト(複数フレーム)を使用するにはどうすればよいですか? – RichieHH
非常に便利です!少なくともロケット科学が関与していない背景画像だけが必要な時は! – Asim
@RichieHH私はSurfaceView(故意に廃棄物)に私のバックグラウンドを持っていて、そのサーフェイスビューはFramelayoutに埋め込まれていて、そのframelayoutにはアニメーション化されたImageViewsが含まれています。 – AgentKnopf
この方法でも使用できます。それはあなたのキャンバスにあなたの大きなdrawbleフィット変更されます。
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
BitmapFactoryクラスにメソッド "BitmapFactory.decodeResource(Resource、Drawable);"がありません。... – Crisic
@Crisic私は 'yourDrawable'が整数であると仮定します。 –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
gerResource()。getDrawable(id);でDrawableを作成します。 – Vikram
getDrawable(id)は推奨されなくなりました。上記のContextCompat呼び出しまたはgetDrawable(id、theme)呼び出しのいずれかを使用する必要があります。 https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) – wblaschko
私にとっては、 'setBounds'を使う必要がありました。それがなければ何も表示されませんでした。 –
- 1. javascript:キャンバス上のイメージ描画(背景)
- 2. イメージを描画キャンバスにフラッシュ
- 3. HTML5キャンバスDrawImage描画イメージ
- 4. ハスケル描画イメージ上のイメージ
- 5. Firefoxのキャンバスの描画パスでアーティファクト(可能なクリッピングエラー)
- 6. イメージをキャンバス上の円弧で描画できますか?
- 7. キャンバス上のイメージ描画をベクトル化する
- 8. アンドロイドのテキストビューで描画可能なサイドベクトル描画可能ベクトル
- 9. ライブラリの上書き描画可能
- 10. キャンバス描画イメージを拡大する
- 11. キャンバス上にテキストを描画し、画面
- 12. Androidのフローティングボタンの変更可能な描画イメージ
- 13. HTMLキャンバス:イメージがキャンバスに描画されないのはなぜですか?
- 14. 描画可能なXML
- 15. GLKView描画可能なプロパティー
- 16. アンドロイド描画可能なカラーマトリックス
- 17. が描画可能なセレクタ
- 18. 描画可能でない
- 19. Android - 描画可能なパス
- 20. 描画可能なフォルダ
- 21. ベクター描画可能なラジオボタン
- 22. カスタム描画可能なアニメーション
- 23. Javascriptイメージがオフスクリーンキャンバスに描画された後でキャンバスに描画されない
- 24. 描画可能なビットマップ、描画可能な未知のサイズ/寸法
- 25. リサイクラビューで描画可能なイメージ名を取得する方法
- 26. Android:キャンバス上にビューを描画
- 27. RecyclerView itemスクロール時にイメージ描画可能なイメージを表示します。
- 28. アンドロイド描画可能な合成画像
- 29. キャンバスに描画可能な描画することは、私はこのコードをキャンバス上に描画可能を描きたいが、それは動作しません
- 30. htmlキャンバス描画イメージが動作しない
をしかし、私はcanvas.drawBitmap(mBitmap、0、0、mBitmapPaint)を使用する場合、それは動作し、キャンバスに保存されたイメージをロードしますが、同時にアンドゥとリドゥが機能しなくなります。コードを確認してください。http://pastebin.com/cP9w6stm – AndroidDev