下の写真のようにグリッドを描きたいです。
6 x 6の小さな長方形ではなく、6本の垂直線と水平線を描くことでこれを描くコツを知っています。
しかし、ズームを小さくしたい場合(画像を表示するためのズーム)、線はたくさんあります。たとえば、ビューウィンドウのサイズが800 x 600で、サイズが400 x 300の画像を表示しているとします(ズームインは2です)。サイズが2x2の400x300の長方形があります(各長方形はピクセルを表します)。
各セルを(ループで、たとえば400 x 300回)描画すると、非常に遅くなります(ウィンドウを移動したとき...)。トリックを使用すると、問題が解決します。
Winapiでこのタスクを実行するためのより良い方法であるGDI(+)があるかどうか、私はまだ興味があります。たとえば、DrawGrid(HDC hdc, int x, int y, int numOfCellsH, int numOfCellsV)
?のような関数
さらに質問があります。サイズを変更しない、ウィンドウを移動しない、またはズームインを変更しない場合、グリッドは変更されません。そのため、画像を継続的に更新しても(キャプチャ画面)、グリッドを再描画する必要はありません。しかし、画面をキャプチャするために(メモリDCに、次にウィンドウのhdcに)を使用StretchBlt
しBitBlt
ます。メモリDCにグリッドを再描画しなかった場合、グリッドは消えます。グリッドをそこに固定し、スクリーンキャプチャのビットマップを更新する方法はありますか?
ps:これは実際の問題ではありません。ズームが10以上のときにグリッドを描画したいので(したがって、各セルのサイズは10 x 10以上です)。この場合、描画する線は最大100 + 100 = 200であり、高速です。もっと速い方法があるかどうか私はただ興味があります。