我自己用VC做了一个图表,可是用OnDraw()函数实现打印时,图像总是在纸的左上角,并且很小,我用StretchBlt(),可是激光打印机不支持这个函数,每次一用这个函数打印时,就什么也打不出来,求助!如何实现打印呀?我翻了几本学习VC的书,上面介绍的打印功能十分的简单,没有找到答案,请高手们指点指点呀!谢谢了!
解决方案 »
- 如何修改任务栏主题样式(how to change task bar style)?
- 如何得到一个EXE(或Dll)隐式依赖的Dll名称(含路径)列表?
- 医学投影图像几何校正?
- 请教:VC编程,显示光标所在行列位置。
- 关于error LNK2005错误的问题。
- OnDraw函数跟OnPaint消息处理函数有什么区别?
- 关于类间数据访问的问题
- 100分请教各位VC++的学习书籍
- 以下是中大软件学院的专用上课书,现以七折出售,全新
- 强制指针转换的简单问题,初学者一样可以拿分!(关怀弱者的问题!)
- 比如执行一个比较耗时的操作,忙状态的鼠标怎么显示出来,需要调用什么函数
- 获取FTP上文件的时间不准确是怎么回事
默认方式的MM_TEXT的单位是像素,100像素的东西在屏幕上大得很,到打印机上就只有针尖大一块了.
用MM_LOENGLISH 等就好得多.
SetMapMode()
[email protected]
void CEmisDrawView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_ANISOTROPIC);
CView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
CSize size = CSize(800, 560);
pDC->SetWindowExt(size); //确定窗口大小
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)size.cx * xLogPixPerInch/96 ;
long yExt = (long)size.cy * yLogPixPerInch/96 ;
pDC->SetViewportExt((int)xExt, (int)yExt);
CScrollView::OnPrepareDC(pDC, pInfo);
}
http://www.csdn.net/Develop/read_article.asp?id=23388
http://www.csdn.net/Develop/read_article.asp?id=23389
再要注意映射模式的问题。