小弟负责维护公司开发的一款报表控件,最近遇到一个不同打印分辨率下打印字体大小不一致的问题。 打印前的准备工作如下
SetMapMode 设置为 MM_ANISOTROPIC
SetViewportOrgEx 设置原点位置
然后根据比例设置 SetWindowExtEx SetViewportExtEx
后调用报表控件的绘制报表方法。 画线等都没有问题,可是当打印机的DPI不同时发现打印出来的字体与设置时大小不一致,
经过调试发现相同字号在不同的打印机DPI下LOGFONT中的lfHeight值不一致,经过
查找资料发现字体高度与字体尺寸需要调用如下公式转换
lHeight = -MulDiv(FontSize,m_pDC->GetDeviceCaps(LOGPIXELSY),72); 可小弟不明白原理以及72是怎么来的,希望能够得到大家的解答。
SetMapMode 设置为 MM_ANISOTROPIC
SetViewportOrgEx 设置原点位置
然后根据比例设置 SetWindowExtEx SetViewportExtEx
后调用报表控件的绘制报表方法。 画线等都没有问题,可是当打印机的DPI不同时发现打印出来的字体与设置时大小不一致,
经过调试发现相同字号在不同的打印机DPI下LOGFONT中的lfHeight值不一致,经过
查找资料发现字体高度与字体尺寸需要调用如下公式转换
lHeight = -MulDiv(FontSize,m_pDC->GetDeviceCaps(LOGPIXELSY),72); 可小弟不明白原理以及72是怎么来的,希望能够得到大家的解答。
解决方案 »
- 关于点阵字体获得(请高手们进来帮帮忙)
- [疑惑]为什么只能看到大概10页左右的帖子?以前的呢
- 如何去除CBitmapButton按钮的外框啊?
- listctrl 自己控制滚动问题 , 在线等
- !!!!!!!!!!!!!!!!!!!!!!!!!!100分求问extern(对象的声明及初始化)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 请问ActiveX controls event发出的消息怎样在container里接收
- 多文档的工具栏问题
- 一个菜问题
- 有关定义路径(即BeginPath(), EndPath())的问题,我实在是没办法了,大家帮帮我把,要多少分我都给~~~
- 在VC中创建的控件数组,如何知道是哪个控件的事件?
- 在include中这些是什么意思?
- 能否跟据条件编译决定EXE的图标?
有个 DWORD 值 96,不过似乎也不像 72 ...