打印问题->如何在不同dpi下在A4上打印实际大小(宽,高)相同的线框~~~~~

gunNrose12987055 2007-11-08 02:23:04
如何在不同dpi下在A4上打印实际大小(宽,高)相同的线框

我想固定打印格式,即不论什么打印机,dpi之类的设置是什么,最后打印结果都一样
不知道该如何实现,望指教
...全文
383 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangsh3002 2008-10-14
  • 打赏
  • 举报
回复
1,创建一个与屏幕兼容的内存DC
2,在内存DC中画图
3,计算屏幕DC与打印DC的横向和纵向的分辨率比(9楼)
4,将内存DC,StretchBlt到打印DC中,按分辨率比缩放
sharus 2008-10-14
  • 打赏
  • 举报
回复
dpi就是每一个英寸上的点数,英文翻译应该是dot per inch。打印机上的dpi,比如为300dpi,就是一个英寸上有300个点。一个英寸是25.4mm.那么一个点就是25.4 / 300 mm.
所以不管打印机dpi是多少。你算出每个点的大小就ok了。

打印的时候你首先要根据A4纸张大小,算出printdc下面长宽上有多少个点。根据打印的内容计算需要输出的坐标。

显示器也有显示精度,一般dpi默认设置为96,那屏幕上的一个点的大小为25.4 /96 mm。
预览的时候就是输出内容要根据显示器的dpi来算。
我是苦力 2008-10-14
  • 打赏
  • 举报
回复
比如打印一英寸宽的线(别的单位类型要换成英寸的单位)。

dpi 为75的时候,那么像素要占75个像素。
dpi 为96的时候,那么像素要占96个像素。

以此类推。

所以每个不同的dpi,打印线宽都要计算。
cui2liu13 2007-11-27
  • 打赏
  • 举报
回复
其实显示器显示和打印机打印就是一个比例问题!你要把比例找好了就应该不会出太大的问题!
cui2liu13 2007-11-27
  • 打赏
  • 举报
回复
或者这样:
float scalex =(float)ptrdc->GetDeviceCaps (LOGPIXELSX) / (float)dc.GetDeviceCaps (LOGPIXELSX);
float scaley =(float)ptrdc->GetDeviceCaps (LOGPIXELSY) / (float)dc.GetDeviceCaps (LOGPIXELSY);
前面是你的打印机DC,后面是显示设备DC,然后把你在OnDraw上显示的东西横坐标乘scalex ,纵坐标乘scaley!方法比较苯,但是比较好理解,呵呵!
一条晚起的虫 2007-11-09
  • 打赏
  • 举报
回复
映射单位换成mm就行了
LouYongZhi 2007-11-09
  • 打赏
  • 举报
回复
DPI就是dot per inch,也就是每英寸的点数
1 inch = 25.4 mm
一般显示器DPI是96,打印机一般DPI比较高。
如果是600,那么你画的坐标相当于屏幕的6倍多一点。
hdqqq 2007-11-09
  • 打赏
  • 举报
回复
这个和你的dc的坐标映射类型有关,你可以看一下SetMapMode的说明文档.
凤矶 2007-11-08
  • 打赏
  • 举报
回复
可以,我是直接都放在OnPrint里的
gunNrose12987055 2007-11-08
  • 打赏
  • 举报
回复
gunNrose12987055 2007-11-08
  • 打赏
  • 举报
回复
to shunruo:
不太明白写在哪个函数里面
OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
SaveDC (hprint);
SetMapMode(hprint, MM_TEXT);
。。。。
}
OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
RestoreDC (hprint, -1);
}
这样写吗?
gunNrose12987055 2007-11-08
  • 打赏
  • 举报
回复
我在描述下我的需求
我在600*600dpi下打印结果字较大,但是换到1200dpi时,自表格就很小了
但我想无乱改变什么设置,打在纸上和预览显示的总是一样大小
凤矶 2007-11-08
  • 打赏
  • 举报
回复
不管什么打印机
每次开始设置为
SaveDC (hprint);
SetMapMode(hprint, MM_TEXT);

结束时
RestoreDC (hprint, -1);

这个过程应该是透明的。

15,979

社区成员

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

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