现在我想创建打印机的兼容位图,类似双缓冲的形式,我在兼容dc中绘图,就是一些画线、文字的操作,绘制完成后将bmp BitBlt到打印机,简易代码如下:
HDC printDC; //获得的打印机dc

int xSrc = ::GetDeviceCaps(printDC, HORZRES);
int ySrc = ::GetDeviceCaps(printDC, VERTRES);
HDC hMem = ::CreateCompatibleDC(printDC);

HBITMAP bmp = ::CreateCompatibleBitmap(printDC, xSrc, ySrc);

HBITMAP old = (HBITMAP)::SelectObject(hMem, bmp);//进行绘图操作
              
                BitBlt(printDC, 0, 0, xSrc, ySrc, hMem, 0, 0, SRCCOPY);
这种方法不知道是否可行。如果是打印A4纸,600DPI的话,位图的大小为4956×7014,位图是不是太大了,不知道能否打印成功,即使能够打印,岂不是也很耗时间。