我有一个只需要HDC的绘图功能。 但我需要展示一个打印出来的精确缩放版本。
目前,我使用 CreateCompatibleDC()与打印机HDC和 使用打印机的HDC创建CompatibleBitmap()。
我想这样DC会有打印机的确切宽度和高度。 当我在这个HDC中选择字体时,文本将与打印机完全一样缩放。
不幸的是,我不能让StretchBlt()将这个HDC的像素复制到控件的HDC,因为我猜它们是不同的HDC类型。
如果我从具有与打印机页面相同的w,h的HDC窗口创建“内存画布”, 字体很明显,因为它们是为屏幕缩放而不是页面......
我应该从窗口的DC和中创建CompatibleDC() CreateCompatibleBitmap()来自打印机的DC还是什么?
如果有人可以解释这样做的正确方法。 (并且仍然有一些看起来像在打印机上一样的东西)......
好吧,我很感激!!
...史蒂夫
答案 0 :(得分:10)
答案 1 :(得分:3)
可能值得尝试的一件事是创建增强的图元文件DC,正常绘制它,然后使用打印机指标缩放此图元文件。这是WTL BmpView示例使用的方法 - 我不知道它有多准确但是值得一看(将相关类移植到Win32应该很容易,但WTL是一个很好的替代品对于Win32编程,所以可能值得使用。)
答案 2 :(得分:2)
它看起来不一样,因为你在打印机DC中有更高的分辨率,所以你必须编写各种转换函数。我会选择你需要工作的方法,但是文本太小,只是将每个位置/字体大小乘以打印机窗口宽度并除以源窗口宽度。