hur.cn - 华软网

 热门搜索

请教:打印输出用CreateFont可旋转字体,对但不同分辨率打印机字号就不同?

  作者:未知    来源:网络    更新时间:2011/8/11
在打印输出的时候,由于是窄行打印机,输出字体旋转90度,相当A4是横印,
   例如大印宋体,10号字
CFont OutFont.CreateFont(45, 0, 900, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET,OUT_DEFAULT_PRECIS, 
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH| FF_SWISS, _T( "黑体")); 
  在1600K针打印机  45号字体就行了,
  在激光的打印机  要130号字体,
  在不同分辨的喷墨就没有试过,,,用预浏就看都不行了,

如果用   CFont OutFont.CreatePointFont(120,"宋体",pDC);
  在1600K针打印机, 及其他打印机都没有问题,字号不变,,,,但是不能旋转字体90度咋办,,,

像由于是窄行打印机,输出字体旋转90度,相当A4是横印,咋办???谢谢了...
---华软 网友回答---
有知道的吗?
---华软网友回复---
从DC获取设备的DPI信息。
_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);
_dpiY = GetDeviceCaps(hdc, LOGPIXELSY);
然后用下面函数转换磅值到像素:
int PointsToPixels(int pt) { return MulDiv(pt, _dpiY, 72); }
---华软网友回复---
从DC获取设备的DPI信息。
_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);
_dpiY = GetDeviceCaps(hdc, LOGPIXELSY);
然后用下面函数转换磅值到像素:
int PointsToPixels(int pt) { return MulDiv(pt, _dpiY, 72); }

有详细的转换细节吗?谢谢!
---华软网友回复---
#include   "UnitConversion.h "

int   fontheight   =   CUnitConversion::PointsToPixels(GetFontSize());//象素单位
pdc-> dptolp

DPIX   =   GetDeviceCaps(pDC-> m_hDC,LOGPIXELSX);
1000*DPIX/72 
找到这些关系,不知道如何整理头绪?
---华软网友回复---
 CFont  TextFont.CreateFont(-MulDiv(14,pDC->GetDeviceCaps(LOGPIXELSY),72),
                        0,900,0,FW_NORMAL,0,0,0,GB2312_CHARSET,
                        OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH|FF_SWISS,_T("宋体"));

在3楼的提示下问题解决了一半,就是将绘图指针pDC->GetDeviceCaps(LOGPIXELSY),72)与画布映像即可解决打印字体旋转。。
    还有个是坐标转换,不然划线位置与不同分辨率的打印机也是不同的?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。