关于打印的问题

coco818 2008-12-13 09:23:18
vc中本人想本人实在一个多文档中做程序,图像显示在视图中,把视图中的内容按要求打印。
想得到程序默认的所见即所得的打印,及其按客户要求按比例放大或者缩小的打印功能

现在本人没有什么思路,希望大家提出来帮帮我!
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiyizhujian 2009-01-06
  • 打赏
  • 举报
回复

void CTestView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// CScrollView::OnPrepareDC(pDC, pInfo);

//pDC->SetMapMode(MM_ANISOTROPIC);
/*
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
// pDC->SetWindowExt(100,100);
pDC->SetViewportExt( (int)(xLogPixPerInch*m_zoomScale),(int)(yLogPixPerInch*m_zoomScale) );
*/
CView::OnPrepareDC(pDC, pInfo);

pDC->SetMapMode(MM_ANISOTROPIC);

//转换坐标映射方式、确定窗口大小
// pDC->SetMapMode(MM_HIMETRIC);

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; //得到设备坐标和逻辑坐标的比例 xLogPixPerInch=96 yLogPixPerInch=96
long yExt = (long)size.cy * yLogPixPerInch/96;
pDC->SetViewportExt( (int)(xExt*m_zoomScale), (int)(yExt*m_zoomScale));


}
Tinary3v0 2008-12-13
  • 打赏
  • 举报
回复
所见即所得的打印 我的代码是这样的:
void C***View::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{
CScrollView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式、确定窗口大小
CSize size = CSize(6000, 5000);
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);
}


设定上面这个代码以后 只要在OnDraw里面绘制的东西 就是打印的东西了。
你在OnDraw里面去实现放大 缩小 打印的时候就是放大缩小的了。

如果想预览,也是一样的 在OnDraw里面去控制就行了。
coco818 2008-12-13
  • 打赏
  • 举报
回复
怎么没有人回答呢 呵呵
ilovedrv 2008-12-13
  • 打赏
  • 举报
回复
看下这个例子

单页文档中实现多幅图像的同时显示与打印


http://download.csdn.net/source/867082
Sat_shan 2008-12-13
  • 打赏
  • 举报
回复
图象显示在显示器DC中写在OnDraw中,在PreaperDC中写入映射比例,不然默认打印情况下的所见即所得大小不对(先是将是图片的实际大小)
关于打印的写在OnPrint()中,在界面中设置参数传入,根据参数进入不同的case打印不同效果
默认即为所见即所得,图像缩放用StretchBlt()实现。

打印关键是计算起点位置 和 图片大小。MFC已经提供好框架,函数写好就ok

映射比例参看《vc++6.0技术内幕》第四章!
coco818 2008-12-13
  • 打赏
  • 举报
回复
一定有办法的
按用户的要求 ,图像按比例缩放去打印
coco818 2008-12-13
  • 打赏
  • 举报
回复
怎么会做不了呢 不可能吧

打印预览的时候,有个打印控制,可以设置图形按比例缩放去 打印
我现在就是想去做这个功能 不知道怎么做
blueink_200451 2008-12-13
  • 打赏
  • 举报
回复
图像显示在视图中,把视图中的内容按要求打印。
这个好像做不了吧?

你要按照什么要求打印呢?
coco818 2008-12-13
  • 打赏
  • 举报
回复
怎么这么没有人气呢

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧