レイアウト:
サードパーティ製のコントロールを使用してドキュメントをスキャンしています。画像をスキャンすると発生するイベントがあります (主に画像に注釈を追加するために使用されます)。このイベントでは、.PAhDCという名前のプロパティが 1 つだけ提供されます。このプロパティは、ファイルに書き込まれる前にイメージを格納する DC へのハンドルです。したがって、ファイルに書き込まれる前に画像に変更を加えることができます。
期待される結果:
画像の一番上に 1/4 インチ (100 ピクセルとしましょう) の空白行を単純に追加したいと思います。元の画像が 200x200 (WxH) の場合、新しい最終画像は 200x300 にする必要があります。
質問とその他の考え:
DCハンドルであることを知っているだけで既存のイメージを変更するにはどうすればよいですか? 私は次のようなことを考えていました...
- 新しい DC を作成します。
- 元の画像より 100 ピクセル高い新しいビットマップを作成します。
- 新しい DC でその新しいビットマップを使用します。
- 元のイメージを新しいビットマップにコピーします (開始点として上から 100 ピクセル)。
- 次に、SelectObject などを使用して元の hDC の古いビットマップを新しいビットマップに置き換え、古いビットマップ オブジェクトを破棄します。
注:可能な限りMANAGED CODEでこれを行いたいと思います。SelectObject() を使用することが私が考えることができる唯一の方法でしたが、それはもちろんアンマネージ コードです... :/