問題タブ [android-canvas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android、キャンバス:surfaceViewにあるキャンバス(=ビットマップ)をクリア(コンテンツを削除)するにはどうすればよいですか?
簡単なゲームを作成するために、次のようなビットマップでキャンバスを描画するテンプレートを使用しました。
(キャンバスは「run()」で定義されます/ SurfaceViewはGameThreadに存在します。)
私の最初の質問は、新しいレイアウトのためにキャンバス全体をクリア(または再描画)するにはどうすればよいですか?
次に、画面の一部だけを更新するにはどうすればよいですか?
android - タッチイベントを含むキャンバスの画像
単純なようですが、実装に問題があります。
onTouch
イベントを含む画面上の画像を含むキャンバスが必要です。試しImageView
ましたが、キャンバスが使えませんでした。SurfaceView
画面にキャンバスで画像を表示しようとしましたが、モーションonTouchイベント(ズーム、パン)に問題があります。
コードで画像をレンダリングするため、キャンバスが必要です。
誰かがこれを行う正しい方法を教えてもらえますか?
android - Android の (2D) Canvas 描画パイプラインのピースはどのように組み合わされますか?
Android の (2D) Canvas 描画パイプラインのコンポーネントがどのように組み合わされるかについて、よりよく理解したいと思います。
たとえば、XferMode、Shader、MaskFilter、およびColorFilterはどのように相互作用しますか? これらのクラスのリファレンス ドキュメントはかなりまばらで、CanvasとPaintのドキュメントには有用な説明がまったく追加されていません。
また、固有の色を持つ描画操作 (例:drawBitmap
と のような「ベクトル」プリミティブdrawRect
) がこれらすべてにどのように適合するかは、私には完全には明らかではありません。それらは常に の色を無視し、Paint
代わりに固有の色を使用しますか?
また、次のようなことができるという事実にも驚きました。
これにより、楕円が消去されます。これに気付く前に、私のメンタルモデルは、キャンバスへの描画は(概念的に)別の「レイヤー」に描画され、そのレイヤーはペイントの転送モードを使用してキャンバスのビットマップで構成されるというものでした。CLEAR はソースのアルファに関係なく常に色 (およびアルファ) を 0 に設定するため、それがそれほど単純である場合、上記のコードはビットマップ全体 (クリッピング領域内) を消去します。したがって、これは、消去を楕円形に制限するために、追加の種類のマスキングが行われていることを意味します。
私はAPI デモを見つけましたが、各デモは「真空状態で」動作し、焦点を当てているもの (例: XferModes) が他のもの (例: ColorFilters) とどのように相互作用するかを示していません。
十分な時間と労力をかけて、これらの部分がどのように関連しているか、ソースを解読するかを経験的に理解することができましたが、他の誰かがすでにこれを解決しているか、パイプライン/描画モデルの実際のドキュメントがあることを願っています.私は逃した。
この質問は、別の SO question に対するこの回答のコードを見て触発されました。
アップデート
いくつかのドキュメントを探しているときに、ここで私が興味を持っているものの多くはskiaの上にあるかなり薄いベニヤのように見えるので、役立つスキーのドキュメントがいくつかあることに気づきました。私が見つけることができる最高のものは、次のようなドキュメントですSkPaint
。
ペイントに割り当てることができる効果には 6 種類あります。
- SkPathEffect - アルファ マスクを生成する前のジオメトリ (パス) への変更 (ダッシュなど)
- SkRasterizer - カスタム マスク レイヤー (シャドウなど) の作成
- SkMaskFilter - 色付けして描画する前のアルファ マスクの変更 (ぼかし、エンボスなど)
- SkShader - グラデーション (リニア、ラジアル、スイープ)、ビットマップ パターン (クランプ、リピート、ミラー) など
- SkColorFilter - xfermode を適用する前にソース カラーを変更します (カラー マトリックスなど)。
- SkXfermode - 例: porter-duff 転送モード、ブレンド モード
明示的には述べられていませんが、ここでの効果の順序は、パイプラインに表示される順序であると推測しています。
android - レイヤード画像とキャンバス
私は2枚の絵を重ね合わせようとしています。一番上のものは透明です。それらの上に、ユーザーが必要なことを何でも描画、入力できるように透明なキャンバスを追加しようとしています。下の2つの画像が表示されます。
したがって、2つの画像を表示するか、キャンバスだけを表示することができます。キャンバスを表示しようとするたびに、それらを覆っている2つの画像の[p]に表示されているように見えます。
これが私がこれまでに持っているものです。
今、私はキャンバスが相対的なレイアウトの一部ではないのではないかと疑っています。それが問題でしょうか?はいの場合、relativeLayout.addView(mCanvas、lp);を実行できません。
助言がありますか?
android - Android -- 非同期オブジェクトの動きに基づくスムーズなキャンバスの並進スクロール
加速度計に基づいてボールが動く Android ゲームがあります。ボールは可変速度で移動します。ゲームのレベルはスマートフォンの画面よりもはるかに大きいため、ボールが画面の端に近づくとキャンバスを移動して、大きなレベルに合わせます。スクロールは動作しますが、問題はボールに基づいてスムーズにスクロールすることです。
更新間のボールの位置の変化に基づいてシフトする試みを次に示します。
ぎこちなく見えます。これは、いくつかの定数に基づいてシフトする試みです。
shiftFactor 値が低いと、スムーズにスクロールしますが、ボールがスクロールを簡単に「追い越す」可能性があります。shiftFactors が大きいほど、スクロールは段階的に途切れ途切れになります。
助言がありますか?ありがとう。
android - キャンバスとパスでアンチエイリアスを実行する方法
私はcanvas.clipPathを使用すると問題が発生します、鋸歯状に表示されます、滑らかに見えません、ペイントを使用したかどうかはわかります、mPaint.setFlags(Paint.ANTI_ALIAS_FLAG)を使用できます、これはアンチエイリアスできますが、私のコードでは、iペイントは使用できません。
あなたは私がcanvas.drawBitmap(bitmap、0、0、null);を使用しているのを見ることができます。ペイントがnullです。ペイントを追加する必要がある場合、アドバイスをいただけますか?写真はhttp://i.6.cn/cvbnm/36/5c/20/5d8d20e3bafe432d792793509f99131e.jpgです。
編集:私はnullのペイントを設定しますが、効果はありません
android - Androidはキャンバスにリスナーを設定します
キャンバスにリスナーを設定して、クリックしたときに反応するようにすることはできますか??
画像にclickListenerを設定するだけでなく、xy座標で画像を描画したいので、私は混乱しています...
もしそうなら、コードを見せてください....
THX、あなたの助けに感謝します....
android - Androidの地図上にパスを描く
アプリケーションで 2 点間のパスを描画する必要があります。しかし、私は簡単な例を見つけることができませんでした.アンドロイドで地図上にパスを描くことについて何か知っている人はいますか?助けてもらえますか...
android - ドローイングキャンバスFC
エラーのない描画キャンバスがありますが、強制終了し続けます。なぜ強制閉鎖なのかわかりません。誰かが私を助けてくれるなら、それは素晴らしいことだと私はキャンバスについて何も知りません。
猫のエラーをログに記録する
これは私のPanelクラスの59行目からです
これは私のCanvasThreadクラスの28行目からです
それが助けになるなら、私はここのチュートリアルからこのコードを見つけました。