トップダウンとボトムアップのDIB



Top Down Vs Bottom Up Dibs



MSDN翻訳からの抜粋

グラフィックプログラミングに不慣れな場合は、ビットマップがメモリアドレスに上から下の行ごとに格納されていると思うかもしれません。ただし、すべてのビットマップがこの方法で保存されるわけではありません。 Windowsシステムでは、DIBビットマップはトップダウンとボトムアップの2つの異なる方向に保存されます。
ボトムアップビットマップの場合、ビットマップの一番下の行がメモリに保存され、ビットマップの一番上まで1行ずつ保存されるため、一番上はメモリスペースの最後に保存されます。したがって、画像の左下隅のピクセルは、メモリ空間の先頭に保存されます。 GDIでは、すべてのビットマップはボトムアップタイプのビットマップです。ボトムアップビットマップを物理メモリに保存する概略図は次のとおりです。



5 * 6 ARGB 32
図15 * 6 ARGB32ビットビットマップ

注:実際のアプリケーションでは、未使用のサイズは固定されていません。イメージハードウェアまたはその他の要因によって異なります。場合によっては、この値は0になることがあります。
画像
図2ビットマップは実際にスタイルをメモリに保存します。逆さまになっています



トップダウンビットマップの場合、メモリに格納される順序が逆になります。ビットマップの一番上の行はメモリスペースの先頭に保存され、次に行ごとに保存され、一番下の行はメモリスペースの最後に保存されます。したがって、画像の左上隅はメモリスペースの先頭に保存されます。 DirectDrawプログラミングは、トップダウンタイプのビットマップを使用します。トップダウンビットマップを物理メモリに保存する概略図は次のとおりです。
トップダウン
図3トップダウンビットマップ

画像
図4ビットマップは実際にスタイルをメモリに保存します。それは直立しています

これは、ビットマップ構造で設定できる2つの異なる画像圧縮方法を表しています。たとえば、BITMAPINFOHEADERパラメーターでbiHeightメンバーがTRUEに設定されている場合、それはボトムアップタイプを意味し、そうでない場合はトップダウンタイプを意味します。