6

同じサイズのHDCにディブを描きたいです。私が使用しているのは:desとsrcが同じサイズです。

   ::StretchDIBits(hdc,
                des.left,des.top,des.right - des.left,des.bottom - des.top,
                src.left, GetHeight() - src.bottom, src.right - src.left,src.bottom - src.top,
                m_pImg->accessPixels(),m_pImg->getInfo(), DIB_RGB_COLORS, SRCCOPY);

しかし、desサイズが同じであるため、遅いと思います。ディブをDCにコピーする必要があります。StretchDIBitsよりも高速なメソッドはありますか?

同じように

StretchBlt (slow)  vs  Bitblt.(faster)
StretchDIBits (slow ) vs ?(faster)
4

1 に答える 1

9

速度の違いは、ストレッチを処理するために必要な一般性に加えて、必要な色変換を行うことから生じます(ターゲットサイズがソースサイズと同じであっても)。

一度だけ絵を描いているのなら、探している機能はだと思いますSetDIBitsToDevice

同じDIBを複数回描画するために速度が気になる場合は、DIBを互換性のあるメモリDCに1回コピーしてBitBltから、そのたびにメモリDCから画面(またはプリンタ)に-ingすることで、パフォーマンスを向上させることができます。君はそれが要る。を使用CreateCompatibleDCしてメモリDCを作成し、StretchDIBitsまたはSetDIBitsToDeviceを使用してその上にイメージを取得します。その後、BitBlt直接ご利用いただけます。DIBSECTIONまた、真のDIBと互換性のあるDCの間でパフォーマンスの妥協点を与える、の使用を検討することもできます。

于 2009-05-14T19:57:51.610 に答える