問題タブ [direct2d]

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

gdi - Direct2D APIを使用してウィンドウの内容をスクロールするには?

ID2D1RenderTargetを介してDirect2D APIで描画したウィンドウの内容をスクロールしたい。

GDI では、CreateCompatibleDC を使用してバッファーを作成し、後で ScrollDC を使用してその内容をスクロールし、露出領域を再描画し、バッファーをウィンドウに BitBlt することができます。

Direct2D で同じ操作を実行するために必要な API が見つかりません。GetDC (および GDI) を使用せずに、独自の 3 番目のバッファーを使用せずに、同じ機能を実現するにはどうすればよいですか?

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

directx - VirtualSurfaceImageSource のちらつきの問題

アプリケーションでVirtualSurfaceImageSourceを使用することを検討しており、 Direct2D マガジン アプリのサンプルに似たものを実装しましたが、仮想サーフェスが表示領域の数倍になると問題が発生しました。

ScrollViewer基本的に、.を含む水平スクロールがありますImage。画像のソースが広いVirtualSurfaceImageSource(少なくとも ~10000 x 500 ピクセル)。の幅ScrollViewerは 1280 ピクセルです。

スクロール ビューアーをタッチ パンでスクロールすると、画像がちらつきます。画像の一部が消えて再描画されます。これは通常、慣性スクロールが停止したときに発生します。ビューにスクロールすると、画像はすでに完全に描画されていますが、何らかの理由でクリアされてIVirtualSurfaceUpdatesCallbackNative::UpdatesNeeded()呼び出されます。

問題を説明するビデオをアップロードしました。スクロールが停止したときに何が起こるかを見てください (0:02、0:17 など)。

なぜこれが起こっているのですか?

また、画像の幅が 5000 px 以下の場合、ちらつきが発生しないことにも気付きました。


これを再現する場合は、Direct2D マガジン アプリのサンプルから始めて、タグの下の Sample.story にテキストを追加します<text name="butterfly-body">。既存のテキストを 10 回ほどコピーするだけです。バタフライ ページを両方向にさまざまな速度でスクロールしてみてください。同じ問題と思われるものが表示されるはずです。

MSDN フォーラムでこの質問をしましたが、今のところ回答がありません。

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

delphi - FMX Direct 2D の問題

皆さんこんにちは!

現在のプロジェクトの 1 つでかなり厄介な問題が発生しています。現在のプロジェクトの 1 つで、ハードウェア ライブラリ (Andreas Hausladen による NVAPI Pascal ヘッダー変換) を使用しています。このライブラリを使用すると、NVIDIA GPU から情報を取得できます。私は温度を取得するためにそれを使用しています. Firemonkey の助けを借りTAnimateFloatて、カスタムメイドのダイヤルの角度を調整して温度を示しています.

FMX はデフォルトで Windows の Direct 2D に設定されているため、さまざまな「ゲーマー」ツール (MSI Afterburner、FRAPS など) を使用して FPS を監視できます。

私が抱えている問題は、システムをスリープ モード (RAM/S3 にサスペンド) にしてから再起動すると、アプリケーションのインターフェイスが (部分的または完全に) 暗くなり、UI に何も表示されないことです。目に見えてさわやかです。NVAPI ライブラリの初期化を定期的に呼び出し、タイマーで結果を確認していますが、問題は解決しません。私も実行ProcessMessagesしており、親ダイヤルとそれは子コントロールです(フォームまたは同等のものrepaintを見つけることができないため)。repaint

ライブラリのさまざまなバージョンを試しましたが、それぞれが同じ問題を示しています。次の段落は、これが実際には問題ではなく、実際にはレンダラーに問題があることを示しています。

私には1つの解決策がありますが、もっとエレガントで利用可能なものがあるかどうか知りたいです。私が持っている解決策には、プロジェクトのソースFMX.Types.GlobalUseDirect2D := False;に前に追加することが含まれます。Application.Initializeただし、これにより、FMX は Direct2D ではなく GDI+ を使用するようになります。もちろん動作しますが、可能であればオプションとして D2D をオープンにしたいと考えています。パラメータに応じてオン/オフを切り替えることができますFindCmdLineSwitchが、D2D から GDI+ に、またはその逆に変更するには、アプリケーションを再起動する必要があります。

奇妙なことに、FPS カウンター (私の場合は FRAPS から) は、UI でまだアクティビティが発生していることを示しています (値が予想どおりに変化するため) が、UI 自体は目に見えて更新されていません。

これは Direct2D に関連する問題ですか、それとも Firemonkey の実装のバグですか? さらに重要なことに、D2D を無効にするよりも良い修正方法はありますか? 最後に、関連して、最初にアプリケーションを終了せずにアプリケーションを「再初期化」することは可能ですか?

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

direct2d - Direct2D のピクセル

ここに画像の説明を入力

濃い灰色の線は黒で、幅は 1 ピクセルです。

明るい灰色の線は黒で、幅は 0.5 ピクセルです。

代わりに、両方とも 2 ピクセル幅です。幅2ピクセルでお願いしたら線が黒なんですが、当然幅2ピクセル。

レンダー ターゲットは、ウィンドウのクライアント領域と同じサイズです。GDIのようなピクセル精度、1座標= 1ピクセル、純粋な色が欲しい...

ありがとう。

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

windows - DirectWriteを使用したテキストのズーム

DirectWrite / Direct2D APIを使用してテキストズームを実装する方法を知っている人はいますか?大きなテキストの本文をスムーズに高精度でズームイン/ズームアウトする必要がありますが、デモ/サンプルが見つかりませんでした。

ありがとう。

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

xaml - XAML ブラシを Direct2D ブラシに変換するにはどうすればよいですか?

私はメトロ スタイル アプリに取り組んでいます。Metro では、XAML と DirectX を混在させることができます。共有サーフェスを使用して一部のコンテンツを Direct2D でレンダリングする XAML ユーザー コントロールを作成しています。Direct2D でジオメトリを塗りつぶすために使用できるブラシを XAML で指定できるようにしたいと考えています。

私ができる必要があるのは、 Windows::UI::Xaml::Media::BrushID2D1Brushに変換することだと思います。

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

directshow - Direct2d を既存のメモリにレンダリングする

DirectShow インプレース ビデオ変換フィルターで Direct2D を使用して、ビデオの上にテキストと画像をレンダリングしたいと考えています。余分なコピーを避けるために、メディア サンプル バッファーをラップする独自の IWICBitmap サブクラスを実装し、CreateWicBitmapRenderTarget を使用して、Direct2D がそのメモリに書き込むようにします。私の質問は、既存のメモリをビットマップにラップする組み込みの WIC クラスを見逃していませんか?

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

direct2d - Direct2D: ウィンドウ レンダー ターゲットの領域をそのままにしておく

通常のウィンドウに描画してHwndRengerTargetいますが、Direct2D とは関係のない他のウィンドウが重なっています。

問題は、 に描画すると、これらのウィンドウが塗りつぶされることHwndRengerTargetです。

これらのウィンドウが正しく表示されたままになるように、Direct2D に特定の領域に触れないようにHwndRengerTarget(つまり、既に画面上にあるピクセルに触れないように) 指示したいと思います。

それは可能ですか?

通常どおり描画RedrawWindowしてからウィンドウを呼び出すと、ちらつきが多くなります。

ありがとう。

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

matrix - Direct2D を使用してコーナーを任意の位置にマッピングする

WIC と Direct2D (SharpDX 経由) を使用して、写真をビデオ フレームに合成しています。フレームごとに、各コーナーが見つかる正確な座標があります。写真自体は標準の縦横比 (4:3 や 16:9 など) ですが、挿入ポイントはそうではありません。回転、拡大縮小、傾斜している可能性があります。

ここに画像の説明を入力

これで、Direct2D でマトリックス変換を適用してこれを実現できることがわかりましたが、その方法は正確にはわかりません。私が見た例は、正確な目的地に一致させようとするよりも、特定の変換 (30 度回転など) を適用することに関するものです。

上記の正確な座標 (A、B、C、D) がわかっている場合、ソース イメージをターゲットにマップする簡単な方法はありますか? または、ソース座標と宛先座標を指定してマトリックスを生成するにはどうすればよいですか?

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

direct2d - ダイレクト2D長方形ブラー効果

Direct2Dは初めてです。長方形にぼかし効果を適用したい。Direct2D効果は、windows2008プレビューでのみ使用できます。解決策を見つけるのを手伝ってください。