0

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

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

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

4

3 に答える 3

3

Direct2D には Scroll API はありません。ハードウェア アクセラレーションによるスクロールを実現する最善の解決策は、2 番目のバッファーを使用することです。ID2D1RenderTargetスクロールしたい で、 を使用して、から返された と同じピクセル サイズおよび同じ解像度のCreateCompatibleRenderTarget()を作成しますID2D1BitmapRenderTarget (この男をキャッシュすることをお勧めします) 。次に、 を使用して基になる を取得します。次に、スクロールする距離を調整してコンテンツをコピーします。次に、そのビットマップのコンテンツを元のレンダー ターゲットにコピーして戻し、カバーされていない領域を再レンダリングして (EndDraw 経由で) 表示します。ID2D1RenderTarget::GetPixelSize()ID2D1RenderTarget::GetDpi()ID2D1BitmapRenderTarget::GetBitmap()ID2D1BitmapID2D1Bitmap::CopyFromRenderTarget()

于 2012-05-21T06:40:38.763 に答える
3

翻訳を使用できます。

MSDN: 2-D オブジェクトを平行移動するとは、x 軸、y 軸、またはその両方に沿ってオブジェクトを移動することです。

m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Translation(20, 10));

詳細はこちら http://msdn.microsoft.com/en-us/library/windows/desktop/dd756691(v=vs.85).aspx

于 2012-10-18T14:51:45.783 に答える
1

DXGI 1.2 には、パラメーターIDXGISwapChain1::Present1を使用した新しい API 呼び出しがありDXGI_PRESENT_PARAMETERS ます。スクロール ウィンドウの内容をサポートする機能が含まれています。

于 2013-02-03T17:04:46.757 に答える