問題タブ [alphablending]

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.

0 投票する
4 に答える
1527 参照

direct3d - Direct3D で Porter-Duff ルールを実装する

Java の Porter-Duff 合成ルール (CLEAR、SRC、SRCOVER など) を実装するには、どの Direct3D レンダリング ステートを使用する必要がありますか?

0 投票する
1 に答える
2083 参照

winforms - アルファ混合フォームでのコントロールの表示

アルファ混合フォームの Visual C# Kicks コードを試しました。TransparencyKeyこれは機能します (プロパティを削除するとすぐに)。つまり、W3C のPNG アルファ テスト イメージを使用して、その下にある他のウィンドウを表示できますが、フォーム上のすべてのコントロールが非表示になります。OnPaintおそらく、オーバーライドされているため、単にペイントされていません。スーパークラスを呼び出してみましたOnPaint:

、しかし、これは何も変わりませんでした。MyBase.OnPaint (最初に電話しても違いはありません。)

残念ながら、アルファ混合フォームに関するほとんどの記事は、コントロールのない純粋なスプラッシュ スクリーンに焦点を当てていますが、最初にサインイン フィールドを表示し、次に進行状況バーを表示するパネルが必要です。

ところで、コントロールには透過性は必要ありません。PNG の透明度が本当に重要なのは、外側のエッジだけです。したがって、このすべての上に別のフォームを追加してこれを偽造する (2 つが常にタンデムに移動する) ことで十分かもしれませんが、私はよりスムーズなソリューションを好みます。

0 投票する
2 に答える
4245 参照

opengl - OpenGL: デスティネーション アルファを変更せずに RGBA->RGBA ブリッティングを行う方法

OpenGL RGBA テクスチャがあり、フレームバッファ オブジェクトを使用して、別の RGBA テクスチャをそれにブリットします。問題は、結果のブリットで通常のブレンド関数を使用する glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA), と、デスティネーション テクスチャ アルファが変更され、以前のアルファが 1 だった場所がわずかに透明になることです。 on RGB 値は および とまったく同じである必要がGL_SRC_ALPHAありGL_ONE_MINUS_SRC_ALPHAます。したがって、ブレンド係数関数は (As,As,As,0) および (1-As,1-As,1-As,1) である必要があります。どうすればそれを達成できますか?

0 投票する
3 に答える
1706 参照

qt - Qtでフルアルファのアニメーション?

完全なアルファ チャネルをサポートする Qt (v4.4 を使用) でサポートされているアニメーション形式はありますか? GIF は 1 ビットの透明度しか持たず、Qt は APNG をサポートしていないと思います。更新: MNG はサポートされているようですが、APNG よりも人気がありません! 多分SVGが私の最善の策です。

0 投票する
2 に答える
4828 参照

graphics - 多数のピクセルのアルファブレンディングの式は何ですか?

多数の RGBA ピクセルがあり、それぞれにアルファ コンポーネントがあります。

したがって、ピクセルのリストがあります: ( p0 p1 p2 p3 p4 ... pn ) ここで、 p_0_ は前面ピクセルで、 p_n_ は最も遠い (背面)。

最後の (またはいずれかの) ピクセルは必ずしも不透明ではないため、結果として得られるブレンドされたピクセルも何らかの形で透明になる可能性があります。リストの最初から最後までブレンドしていますが、その逆ではありません (はい、レイトレーシングです)。そのため、いつでも結果が十分に不透明になった場合、十分に正しい結果で停止できます。この方法で混合アルゴリズムを適用します: (((( p0 @ p1 ) @ p2 ) @ p3 ) ... )

R、G、B だけでなく、A 成分の正しい配合処方を教えてください。

UPD : 色をブレンドする決定されたプロセスで、多くの数式を使用できるのはどうしてでしょうか? ある種の近似ですか?私にとっては、これはおかしいように見えます。数式は、実際に効率や最適化が得られるほど違いはありません。誰でもこれを明確にできますか?

0 投票する
6 に答える
22932 参照

mfc - 32 ビットのアルファ チャネル ビットマップを描画するには?

アルファ チャネルを使用して bmp 画像を表示するには、カスタム コントロールを作成する必要があります。背景はさまざまな色でペイントでき、画像には影があるため、アルファ チャネルを真に「ペイント」する必要があります。

誰もそれを行う方法を知っていますか?

また、可能であれば、アルファ チャネル情報を使用してマスクを作成し、マウスが画像をクリックしたのか、透明な領域をクリックしたのかを知りたいと思っています。

どんな種類の助けも大歓迎です!

ありがとう。

Edited(JDePedro): 何人かが示唆しているように、アルファ ブレンドを使用してビットマップをアルファ チャネルでペイントしようとしています。これは、リソースから 32 ビット ビットマップをロードし、AlphaBlend 関数を使用してペイントしようとして実装した単なるテストです。

これは単なるテストなので、ダイアログの OnPaint にコードを入れました (CDC オブジェクトの AlphaBlend 関数も試しました)。

不透明な領域は正しくペイントされていますが、ビットマップを透明にする必要がある場所が白くなります。

助けて?

これはスクリーンショットです。見にくいですが、青い円の周りに白い四角形があります: 代替テキスト http://img385.imageshack.us/img385/7965/alphamh8.png

Ok。わかった!アルファ値のすべてのピクセルを事前に乗算する必要があります。誰かがそれを行うための最適化された方法を提案できますか?

0 投票する
5 に答える
10487 参照

webkit - WebKit を使用してクリアな背景の上に Web コンテンツをレンダリングすることは可能ですか?

レンダリングされたすべてのグラフィックスを完全に透明な背景にレンダリングできる WebKit へのパッチの可能性を評価しようとしています。

目的の効果は、背景をまったく使用せずに Web コンテンツをレンダリングすることです。デスクトップ (またはブラウザー ウィンドウの背後に表示されるもの) の上に浮かんでいるように見える必要があります。

アプリがこれを行うのを見た人はいますか?(可能な端末エミュレーターをいくつか思いつきます。) 誰かが WebKit (またはおそらく Gecko?) 内で作業したことがある場合、これを行うことが可能だと思いますか?


更新: Mac OSX ダッシュボード ウィジェットがまさにこの手法を使用していることに気付きました。したがって、これは可能でなければなりません。


更新 2: Linux で WebKit をコンパイルしたところ、構成オプションに次のものが含まれていることに気付きました。

私は近づいています。誰でも助けることができますか?


更新 3:さまざまな関連するメーリング リストの投稿で、これに関する参照を引き続き見つけています。

0 投票する
1 に答える
1499 参照

mfc - カスタム透明コントロールの作成

ピクセルごとの alphablend を使用してビットマップを表示するカスタム コントロールを作成しようとしています (他の質問で既に知っている人もいます)。

現在、リソース エディターでカスタム コントロールを使用しており、それを CWnd から派生したクラスにアタッチしています。カスタム クラスを登録するときに、WNDCLASS 構造体の hbrBackground を NULL_BRUSH に設定して、コントロールの透過性を実現します。

コントロールの OnPaint では、AlphaBlend を使用して、ピクセルごとのアルファ ブレンド ビットマップをペイントします。

これは非常にうまく機能しますが、次の2つの問題があります。

  • マウスがコントロールの上にあるときに表示されるビットマップを変更したい。コントロールは透明であるため、一方のビットマップが他方のビットマップと重なっていない領域は消去されません。画像が変更されたときに背景を消去するにはどうすればよいですか?

  • 2 番目の問題は、2 つの重複するコントロールに関連しています。私のコントロールは、グラデーションを持つ他のコントロール上に描画されます (実際には他のコントロール内にあります)。問題は、自分のコントロールを z オーダーの前に置くと、他のコントロールが自分のコントロールと重なり、自分のコントロールが表示されないことです。Z オーダーの前に他のコントロールを配置すると、コントロールでマウス メッセージを取得できません。

たぶん、私は何か間違ったことをしている、または自分のコントロールを実装しようとしている方法が間違っています。どんな種類の助けもいただければ幸いです。

ありがとう、

ハビエル

0 投票する
1 に答える
544 参照

gdi - StretchDIBits でサムネイルの周りの影を模倣する方法は?

現在、画像ビューアを作成しています。これは、サムネイルの表示に使用されます。見苦しいので、サムネイルに丸い影を描くことにしました。

背景色あり。StretchDIBits を使用して、サムネイルの位置に影の画像を描画しています。ただ、背景色が被ってしまうのは本当に困ります…背景が白だと綺麗に見えます。ただし、背景が白でない場合は、白い境界線が表示されます。

そこで私は AlphaBlend を利用し、最初に影の画像を DC に描画し、次に AlphaBlend を背景に使用します。ただし、まだ白い枠が見えます。

背景が何であれ、完璧な影を生成する理由はありますか?

0 投票する
3 に答える
3313 参照

performance - パフォーマンスを向上させるために OpenGL でアルファ ブレンドに取り組む

ブレンドを使用するとゲームのパフォーマンスが低下するため、ブレンドの「錯覚」を作成するためにいくつかのブレンド戦略を試しました。そのうちの 1 つは奇数フレームごとにスプライトを描画しているため、半分の時間でスプライトが表示されます。効果はかなり良いです。(ちなみに、適切なフレームレートが必要です。そうしないと、スプライトが著しくちらつきます)

それにもかかわらず、ビジュアル エクスペリエンスを (過度に) 損なうことなく全体的なパフォーマンスを向上させるために、ブレンドを回避するための良い洞察があるかどうかを知りたい.