0

我正在尝试以位图的形式导出我的程序生成的绘图。在内存中创建位图(使用 CreateDIBSection)并将其保存在磁盘上(使用 GDI+)没有问题。要绘制,我必须使用设备上下文,并且唯一容易获得的是与屏幕兼容。所以我创建了一个兼容的 dc,选择我已经创建的位图到这个设备上下文中,我准备好在位图中绘制和打印。它有效 - 但它让我无法控制绘图的大小(注意:绘图的大小,而不是位图的大小)。如果我正确理解正在发生的事情,则映射模式遵循屏幕 DC 的 DPI,这反过来意味着绘图的大小(以及我放在绘图上的文本)在不同的计算机上是不同的。

有什么方法可以更改设备上下文的 DPI 分辨率吗?或者也许存在一种更好的方法来做我想做的事情?完美的解决方案是向用户询问像素位图大小,并能够绘制一个非常适合位图的图。

4

1 回答 1

0

由于您已经使用 Gdiplus 而不是 GDI,因此您不必使用设备上下文进行绘制。您只需将您的Gdiplus::Graphics对象与 aGdiplus::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 回答