問題タブ [porter-duff]
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 - PorterDuff.Mode と同等のエッジ フェージング
のエッジ フェードをプログラムでレンダリングしたいと考えていますTextView
。どのモードで真のアルファ グラデーションを作成できますか?
実際のエッジ フェードは、透明度を から までスムーズに減らし (オーバーレイ グラディエント ハックなし) 1.0
、0.0
トップ ビューが背景ビューにフェードインするようにします。
すべての組み合わせを試しましたが、どれも機能しませんでしたか? そうすることは不可能ですか?
qt - Qt で半透明の色をペイントするときに色の量子化を避ける
Qt 5.2 を使用してアルファを含む画像を作成したいのですが、色の値が量子化されていることがわかりました。次に例を示します。
これは出力します:
私のアプリケーションでは、元の赤、緑、青の値を維持することが重要です。私が見逃した Qt オプションはありますか、それとも Qt 2D レンダラーの予想される動作ですか?
android - 3D画像マスキングアンドロイド
私は3D画像マスキングに関するアプリケーションを開発しています。このために、さまざまな透明画像があり、それらを配列に配置しています。多くの検索を行い、最終的にPorterDuffXfermodeを使用してマスキングを実現しました。しかし、一度にマスクされた画像を1つしか取得できません.以下のコードを見てください
下の画像のような私の希望の出力。よろしくお願いします
android - ビットマップを横線でめちゃくちゃに書く
透明なビットマップに指で描画しようとしています。私が使用しているキャンバスは画像をうまく描画しますが、画像を保存すると、画像は次のように表示され、水平方向の透明な線がすべて表示されます。
次のコードを使用して描画します。
ファイルは次を使用して保存されます
標準のファイル保存を使用して保存します
この問題を解決する方法はありますか? 同時に、ビットマップを pdf に埋め込んでいますが、色が本来よりも暗くなります。
これは、保存する前の画面上のイメージです。背景は関係ありません。画面にうまく描画できますが、pngに保存するとめちゃくちゃに見えます。
android - 1 つのパス上に重なり合う領域を描画する
交差するがあり、Path
2 回以上交差する領域の色を変更したいと考えています。以下のように:
ということで、塗料をセット。
しかし、私が電話するcanvas.drawPath(mPath1, highlighterPaint)
とcanvas.drawPath(mPath2, highlighterPaint)
、下の画像が表示されます。この図には、エンドポイントにラベルが付けられた 2 つのパスがあります。
に各パスを描画していCanvas
ます。
セパレートPath
は共有領域を正しく暗くしますが、シングルPath
はそうではありません。最初の画像と同様の効果を得るにはどうすればよいですか?
java - PorterDuff モードの実装 - アルファの扱い方
Android でビットマップ ブレンディングを使用する必要がある状況にあります。iOS版のアプリと同じようにします。
iOS の連中は PorterDuff モードを使用していましたが、これは現在 Android のPorterDuff クラスには標準で存在しません。
まさにソフトライトモードが必要ですが、それを忘れてください-Androidに欠けているいくつかのモードの全体像に対処することにしました。
調査中に見つけたリンクは次のとおりです。
それらのすべてに目的の式が含まれているため、メソッドを記述して、必要なすべてのブレンド モードを実装するのは非常に簡単に思えます。
しかし、そこからトラブルが始まります。
上記のリンクの式は色成分のみを扱い、アルファは当然のことであるかのように脇に置きます。しかし、そうではありません。
これまでのところ、私はこのSO questionのコードを手に入れました。ソフトライト式を実装するメソッドを書き直そうと考えてoverlay_byte(int sc, int dc, int sa, int da)
いますが、どうすればいいのかsa
、da
変数がわかりません。
PS: ブレンド モードの裸の Java 実装のパフォーマンスが、ネイティブ android の PorterDuff クラスのパフォーマンスとはかけ離れていることは承知していますが、それは後で対処できます...
後で追加:
昨日以来、私はいくつかのより深い調査を行い、Java でソフトライト ブレンディング モードを実装する方法を見つけました。ソースは次のとおりです (PorterDuff.Mode.LIGHTEN などのすぐに使用できるモードを使用するときに、Android 内で機能するものと同じです)。
私はsoftlight_byte
そこからメソッドを取り、彼が使用するすべてのものをJavaに翻訳しました(ここでできる限りのことをしました)。結果は機能しますが、画像が正しくありません。下の部分は問題ないように見えますが、上の部分は焼き直されます。Javaに書き直した私のコードは次のとおりです。
誰かが間違いの可能性をチェックできますか?これは私にとって非常に重要です!
PS:applyBlendMode
上記のSOの質問とsoftlight_byte(rD, rS, aS, aD);
認識から取られました-C ++から書き直されました。
android - drawBitmap をキャンバスに透明なビットマップで、元のピクセルを置き換えます
私のアプリでは、ユーザーが画像を編集できます。画像は「スライス」で編集されます: ユーザーは編集する大きな画像の一部を選択し (1)、ユーザーはそれを編集し (2、3)、ユーザーが終了すると、編集されたスライスが元の画像の上にコピーされます。画像 (4)。次の図で、簡略化された手順を確認できます。
スライスを編集するには、トリミングされた領域のビットマップを作成します。これは、ユーザーが編集する領域です (2,3)。
ユーザーが終了したら
drawBitmap()
、元の画像にスライスします (4)。元の画像には反転する必要がある変換行列などがあるため、プロセスはより複雑になりますが、簡単にするためにはこれで十分です。
この問題は、ユーザーがスライス内のいくつかのピクセルをクリアしたときに発生します (3)。適切なモードが見つからないPorterDuff / Paint
ため、編集されたスライスが元の画像の部分を、透明なピクセルでも置き換えます。私が望むのは、(4)に示されている結果を得ることです
これまでの私の最善の策は を使用するPorterDuff.SRC
ことですが、下の画像でわかるように、元の画像では透明なピクセルが黒に変わります。ペイントの色を透明に設定すると、結果全体が黒になります。
私も試しSRC_OVER
てみmImageCanvas.drawARGB (0xff,0,0,0),
ましたが、運がありませんでした。最初のケースでは、透明なピクセルは単に無視されます。2 番目の例では、透明なピクセルが黒く塗られています。