[解決済み] アンドロイド、キャンバス。SurfaceViewの中にあるCanvas(=ビットマップ)をクリアする(内容を削除する)にはどうしたらいいですか?
2022-12-24 10:20:52
質問
簡単なゲームを作るために、このようなビットマップでキャンバスを描画するテンプレートを使いました。
private void doDraw(Canvas canvas) {
for (int i=0;i<8;i++)
for (int j=0;j<9;j++)
for (int k=0;k<7;k++) {
canvas.drawBitmap(mBits[allBits[i][j][k]], i*50 -k*7, j*50 -k*7, null); } }
(キャンバスは "run()" で定義され、SurfaceView は GameThread に住んでいます)。
私の最初の質問は、どのようにして
全体
をクリア(または再描画)するにはどうしたらよいでしょうか。
次に、画面の一部だけを更新するにはどうしたらよいでしょうか。
// This is the routine that calls "doDraw":
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mMode == STATE_RUNNING)
updateGame();
doDraw(c); }
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c); } } } }
どのように解決するのですか?
<ブロッククオート新しいレイアウトのためにキャンバス全体をクリア (または再描画) するにはどうすればよいですか (= ゲームで試してみる)?
次のように呼び出すだけです。
Canvas.drawColor(Color.BLACK)
をクリアするために必要な色、または
Canvas
をクリアしたい色で。
また、画面の一部だけを更新するにはどうすればよいのでしょうか?
Android OS は画面更新時にすべてのピクセルを再描画しているため、画面の一部だけを更新する方法はありません。しかし、古い描画をクリアしないまま
Canvas
の古い描画をクリアしていない場合、古い描画は表面に残っているため、画面の一部だけを更新する方法の1つであると思われます。
というわけで、画面の一部分だけを更新したい場合は
Canvas.drawColor()
メソッドを呼び出さないようにすればよいのです。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] 文字列リソースにHTML?
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Android Webview - キャッシュを完全に削除する
-
[解決済み] HttpPostによる画像送信
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] アダプタからActivityメソッドを呼び出す