問題タブ [gdi]

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 投票する
2 に答える
4211 参照

mfc - 再描画されない WS_EX_TRANSPARENT スタイルの静的コントロール

32 ビット ビットマップの描画中に、ピクセルごとのアルファ ブレンドを実装するコントロールを作成しようとしています。

CWnd を拡張し、リソース エディターで静的コントロールを使用します。アルファ チャネルを正しくペイントできましたが、静的コントロールは灰色の背景をペイントし続けます。

コントロールが背景を描画しないように OnEraseBkgnd を上書きしましたが、うまくいきませんでした。WS_EX_TRANSPARENT を使用して、最終的にそれを行うことができました。

私の問題は、私のコントロールが他のコントロールの上に配置されていることです。ダイアログが最初にペイントされたときはすべて正常に動作します...しかし、「親」コントロール (つまり、自分のコントロールの下にあるコントロール) をクリックすると、コントロールは WM_PAINT メッセージを受け取りません。そのため、もう塗装されていません。

アプリケーションを最小化して再度最大化すると、コントロールが再び描画されます。

誰かヒントを教えてください。私はこのコントロールに夢中になっています!!!

ありがとう。

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

c# - アイコン付きの GDI ハンドル。l

私はwinformsアプリケーションを持っています。多くのアイコンを持つユーザーコントロールがあります。ユーザーはこのコントロールをフォームに (タブ付きレイアウトで) 何度でもロードできます。現在、コントロールが作成されるたびにアイコンをロードしています(アプリでは最大50回になる可能性があります)。これらのアイコンをアプリケーションにキャッシュする方法はありますか。これを行った場合、これが問題になりつつあるため、使用しているgdiハンドルの数が減りますか。

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

c++ - C++/Win32: HBITMAP からアルファ チャネルを取得する方法は?

HBITMAPアルファチャンネルデータを含んでいます。::AlphaBlendGDI 関数を使用してこれを正常にレンダリングできます。

しかし、::GetPixelGDI 関数を呼び出すと、アルファ コンポーネントを含む値が返されません。ドキュメントには、ピクセルの RGB 値を返すと書かれています。

のピクセルのアルファ チャネル値を取得する方法はありますHBITMAPか?

::AlphaBlend を使用するタイミングと、ソース HBITMAP 内の特定の色を透明として扱う昔ながらの方法を使用するタイミングを検出できるようにしたいと考えています。



答え

GetDIBits を使用して、イメージの最初 (またはそれ以上) のスキャン ラインを取得します。

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

c++ - アルファチャンネル情報を保持して、HBITMAP から Gdiplus::Bitmap を作成する方法は?

Bitmap::FromHBITMAP 関数を使用して新しい Gdiplus::Bitmap を作成すると、結果の Bitmap は不透明になります。元の HBITMAP の部分的な透明度は保持されません。

アルファ チャネル データをもたらす HBITMAP から Gdiplus::Bitmap を作成する方法はありますか?

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

c++ - hdcの内容をビットマップにコピーする

HDCのコンテンツをビットマップにコピーするにはどうすればよいですか?

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

gdi+ - GDI+ から GDI への変換に関する奇妙な問題: Bitmap と HBitmap

gdi+ Bitmap を gdi オブジェクト HBitmap に変換したい。

私は次の方法を使用しています:

img オブジェクトがダイアログに描画されています。メソッドのこの部分が呼び出されると、奇妙なことが起こります! ウィンドウに表示される画像が変わりました!少しクリアまたはシャープになります。私の質問は、何が起こるのですか?

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

gdi - GDI HDC の描画可能領域を設定するには?

HBITMAP を HDC に描画したいのですが、

私は StretchDIBits を使用しました。それは正常に動作します。::StretchDIBits.

ただし、描画結果をウィンドウで監視したいだけで、ウィンドウの横で、stretchDIBits が何の効果も受けないようにしたいのですが (他の領域には描画できません)、どうすればよいですか?

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

delphi - Canvas.LineTo の行末スタイルの設定

TCanvas.LineTo メソッドの線端のスタイルを設定する方法はありますか? Pen.Width が大きな値 (9 など) に設定されている場合、異なる色の行に複数の行が表示されると、デフォルトで丸みを帯びた端になるようです。

次のようになります (端が丸くなっています)。

(* は青色、. は黄色)

中央の線の後に外側の 2 つの線が引かれると、さらに悪化します。

私はそれがこのように見えることを望みます(ストレートエンド):

Pen はこれに対する設定を提供していないようで、LineTo メソッドも提供していません。私が呼び出すことができるWindows API関数はありますか?

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

c++ - GDI+ ディザリングの問題

Windows 用の Win32 API を使用する C++ アプリケーションを使用していますが、GDI+ ディザリングに問題がありますが、その理由がわかりません。

カスタム コントロール (カスタム ウィンドウ) があります。WM_PAINT メッセージを受信したら、グラフィック デバイスで FillPolygon を使用していくつかのポリゴンを描画します。このグラフィック デバイスは、BeginPaint の HDC を使用して作成されました。

ただし、ポリゴンが画面に表示されると、透明ではなくディザリングされ、いくつかの色 (おそらく 256?) しか表示されないように見えます.NET インターフェイスを使用して C# で同じことを GDI+ に実行すると、正常に動作します。何が起こっているのか疑問に思っています。

私は特別なことをしていません。これは、私の知る限り、正常に動作するはずの単純な例です。私は何か間違ったことをしていますか?

編集:気にしないでください。C# の例ではリモート デスクトップでディザ処理を行っていませんが、リモート デスクトップでのみ発生します。リモート デスクトップは 32 ビット カラーに設定されているため、それがどうなっているのかわかりません。

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

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

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

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

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

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