0

プログラムで生成されたプロットをビットマップ形式でエクスポートしようとしています。(CreateDIBSection を使用して) メモリ内にビットマップを作成し、(GDI+ を使用して) ディスクに保存することは問題ありません。描画するにはデバイス コンテキストを使用する必要があり、簡単に使用できる唯一のものは画面と互換性があります。互換性のある dc を作成し、このデバイス コンテキストに既に作成したビットマップを選択すると、ビットマップに描画して印刷する準備が整います。そしてそれは機能しますが、プロットのサイズを制御することはできません(注:ビットマップのサイズではなく、プロットのサイズ)。何が起こっているのかを正しく理解している場合、マッピングモードは画面DCのDPIに従います。これは、プロットのサイズ(およびプロットに配置したテキスト)がコンピューターによって異なることを意味します。

デバイス コンテキストの DPI 解像度を変更する方法はありますか? それとも、私がやろうとしていることを行うためのより良い方法が存在するのでしょうか? 完璧な解決策は、ユーザーにピクセル ビットマップ サイズを尋ね、ビットマップにうまく収まるプロットを描画できるようにすることです。

4

1 に答える 1

0

既に GDI 経由で Gdiplus を使用しているため、デバイス コンテキストを使用して描画する必要はありません。Gdiplus::Graphicsオブジェクトを のGdiplus::Bitmap代わりに に関連付けるだけですHDC。ビットマップ サイズは言うまでもなく、単位と変換はすべてデバイスに依存しません。それが役立つことを願っています。

Gdiplus::Bitmap bitmap( L"miranda_kerr.png" ); // draw over existing
Gdiplus::Graphics graphics( &bitmap );

Gdiplus::Pen pen( Gdiplus::Color(255,0,0));
Gdiplus::Status status = graphics.DrawLine( &pen, 20, 20, 100, 500 );
//...
于 2013-05-07T08:00:59.050 に答える