不同打印机高度与宽度问题??高手能解决么?

flinming 2003-07-03 10:09:53
我选择用不同的打印机测试?结果每次通过
int nWidth=pDC->GetDeviceCaps(HORZRES);
int nHeight=pDC->GetDeviceCaps(VERTRES);
得出的大小都不一样,同样是A4纸张打印,比如有的是w 6714,h 4702,而有的w 3969,h2892,还有其他的,所以我想问下是否有转换的模式?或者还是打印机默认的映射模式不一样?
...全文
123 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjp899 2003-07-11
  • 打赏
  • 举报
回复
不同的打印机是不一样 的 ,你可以用一个比例系数来处理,他们的比例几乎是一养的,就是int cxPagePixels = pDC->GetDeviceCaps(HORZRES);
int cyPagePixels = pDC->GetDeviceCaps(VERTRES);
int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE);
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE);

double rax = cxPagePixels/cxPageMilliMeters;

以后输出的时候都乘以个rax就行了!不过是用TEXT的映射模式。
lingfeng8888 2003-07-11
  • 打赏
  • 举报
回复
因为原来一直没有用过GetDeviceCaps,所以只是随便说说,真是对不起。
我的打印机为Epson stylus phtoo 870,经过测试证明与映射模式无关。

但并不象你们得到的数值是一样的,如下(pDC已与打印机相关联):
int cxPagePixels = pDC->GetDeviceCaps(HORZRES); //结果为2892
int cyPagePixels = pDC->GetDeviceCaps(VERTRES); //结果为3969
int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE); //结果为204
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE); //结果为280

即使pDC不与打印机相关联而是用GetDC()得到,其结果也不相同
int cxPagePixels = pDC->GetDeviceCaps(HORZRES); //结果为1152
int cyPagePixels = pDC->GetDeviceCaps(VERTRES); //结果为864
int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE); //结果为320
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE); //结果为240
并且与我的显示器分辩率和实际尺寸相符。

因此,有必要查看一下pDC是怎么来的,是不是与相关的设备相关联。
lingfeng8888 2003-07-11
  • 打赏
  • 举报
回复
不知道对不对:
在使用上述的pDC时,是否已经做了pDC->SetMapMode。
大家设置映射模式后再试试看是否一样。
lingfeng8888 2003-07-11
  • 打赏
  • 举报
回复
不知道对不对:
在使用上述的pDC时,是否已经做了pDC->SetMapMode。
大家设置映射模式后再试试看是否一样。
flinming 2003-07-11
  • 打赏
  • 举报
回复
int cxPagePixels = pDC->GetDeviceCaps(HORZRES);
int cyPagePixels = pDC->GetDeviceCaps(VERTRES);

int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE);
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE);
测试过在同一台打印机cxPagePixels 和cxPageMilliMeters结果是一样的?惨,
惠普和的 epson还是不一样!◎◎◎2
flinming 2003-07-11
  • 打赏
  • 举报
回复
int cxPagePixels = pDC->GetDeviceCaps(HORZRES);
int cyPagePixels = pDC->GetDeviceCaps(VERTRES);

int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE);
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE);
测试过cxPagePixels 和cxPageMilliMeters结果是一样的?惨
syl08341 2003-07-08
  • 打赏
  • 举报
回复
:
tyjoe 2003-07-07
  • 打赏
  • 举报
回复
每次都不一样?

我测试过,一样的啊!!
zhucde 2003-07-03
  • 打赏
  • 举报
回复
up
丁淇石头 2003-07-03
  • 打赏
  • 举报
回复
你得到的值好象是象素数,比较以下的语句就明白了
int cxPagePixels = pDC->GetDeviceCaps(HORZRES);
int cyPagePixels = pDC->GetDeviceCaps(VERTRES);

int cxPageMilliMeters = pDC->GetDeviceCaps(HORZSIZE);
int cyPageMilliMeters = pDC->GetDeviceCaps(VERTSIZE);

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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