现在我想创建打印机的兼容位图,类似双缓冲的形式,我在兼容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,位图是不是太大了,不知道能否打印成功,即使能够打印,岂不是也很耗时间。
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,位图是不是太大了,不知道能否打印成功,即使能够打印,岂不是也很耗时间。
解决方案 »
- CDockablePane加上CRichEditCtrl没有滚动条
- 怎么动态切换BCG工具栏?
- vc 6.0 中如何得到程序的汇编代码。
- 在线求助!vc++安装时的一个提示!
- 大家来看看啊!UP有分!如何判断XML的节点是否存在?(XML结构如内显示)
- 请问如何实现快速的画粗线函数,
- 我的电脑不支持ACPI,在格了以后有说F:盘有问题该怎么办啊。要去让别人给写BIOS了吗
- 很简单的问题,获得WINDOWS系统在硬盘的存放路径的API是什么??
- 什么软件能把*.pdf文件转换为*.txt或*.htm文件?
- 我在listCtrl标题头按左键有LVN_COLUMNCLICK消息对应,但按右键有什么消息对应吗?谢谢大家
- 求助,如何播放内存中的多媒体文件?解决有加分。
- 关于mfc向导生成的对话框应用程序 ?
而且用缓冲的话, 还要注意背景色什么的, 对于PC上来说,可以不用, 打印页数不多的话,速度不影响,