请教各位,我要在一个对话框上输出字符,代码如下,其中Ymax、Ymin、Xmax、Xmin是实际坐标的范围
输出的字符随着范围的不同大小也会变化,如果用MM_ANISOTROPIC字符大小可以固定,但纵横比又不同,我想要纵横比一样且字符大小不变该怎么做?
CRect rect;
this->GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
double dx=1.5;
pDC->SetWindowExt((Ymax-Ymin)*dx,-(Xmax-Xmin)*dx);//draw title
CFont titleFont;
CSize titleSize;
CRect rectTitle;
int nFontSize = 10;//用逻辑单位
CString strFontName = "宋体";
titleFont.CreateFont(nFontSize, 0,0,0, FW_NORMAL, 0,0,0, DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, strFontName);
CFont *pOldFont = pDC->SelectObject(&titleFont);// Get the average character width (in GridCtrl units) and hence the margins
titleSize = pDC->GetTextExtent(_T("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSATUVWXYZ"),52);
titleSize.cx /= 52;rectTitle.top = ((Xmax-Xmin)*dx/2);//((Xmax-Xmin)*dx/2);//-rect.right /2;
rectTitle.left =-(Ymax-Ymin)*dx;//-((Xmax-Xmin)*1.8);//rect.bottom /2;
rectTitle.right = (Ymax-Ymin)*dx ;//cx- (LEFT_MARGIN+RIGHT_MARGIN)*titleSize.cx;
rectTitle.bottom = ((Xmax-Xmin)*dx/2)-HEADER_HEIGHT*titleSize.cy;
int nPrevBkMode = pDC->SetBkMode(TRANSPARENT);
// print App title on top right margin
CString strHeaderString="导 线 示 意 图";
pDC->DrawText(strHeaderString, &rectTitle, DT_CENTER | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER);
输出的字符随着范围的不同大小也会变化,如果用MM_ANISOTROPIC字符大小可以固定,但纵横比又不同,我想要纵横比一样且字符大小不变该怎么做?
CRect rect;
this->GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetWindowOrg(0,0);
double dx=1.5;
pDC->SetWindowExt((Ymax-Ymin)*dx,-(Xmax-Xmin)*dx);//draw title
CFont titleFont;
CSize titleSize;
CRect rectTitle;
int nFontSize = 10;//用逻辑单位
CString strFontName = "宋体";
titleFont.CreateFont(nFontSize, 0,0,0, FW_NORMAL, 0,0,0, DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, strFontName);
CFont *pOldFont = pDC->SelectObject(&titleFont);// Get the average character width (in GridCtrl units) and hence the margins
titleSize = pDC->GetTextExtent(_T("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSATUVWXYZ"),52);
titleSize.cx /= 52;rectTitle.top = ((Xmax-Xmin)*dx/2);//((Xmax-Xmin)*dx/2);//-rect.right /2;
rectTitle.left =-(Ymax-Ymin)*dx;//-((Xmax-Xmin)*1.8);//rect.bottom /2;
rectTitle.right = (Ymax-Ymin)*dx ;//cx- (LEFT_MARGIN+RIGHT_MARGIN)*titleSize.cx;
rectTitle.bottom = ((Xmax-Xmin)*dx/2)-HEADER_HEIGHT*titleSize.cy;
int nPrevBkMode = pDC->SetBkMode(TRANSPARENT);
// print App title on top right margin
CString strHeaderString="导 线 示 意 图";
pDC->DrawText(strHeaderString, &rectTitle, DT_CENTER | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER);
解决方案 »
- VC多线程调用出错,没有找到pthreadVC2.dll
- 关于 msdn查询的问题
- 菜单上贴位图怎样与Toolbar关联?
- VC+MySQL二进制大对象BLOB的读写
- 一系列的控件如何在循环中赋值
- CToolTipCtrl提示信息出现慢(好像要等一秒),怎么让它快一点显示出来呢?
- 在VC中,可不可以使用JScript的代码?
- 哪种报表控件比较好用?如何用VC编程检测本机上的SQL Server实例?
- 在VC中如何知道当前系统字体是“大字体”还是“小字体”,还想知道大小字体的比例关系,谢谢
- 花了半天工夫网上找的COM资料,作成了chm 要的来下
- 怎样将一个char*赋给一个COLORREF???譬如char*="RGB(0,0,0)",怎麽把这个赋给COLORREF 变量???
- 一个没有办法描述的问题:非模式窗口的关闭问题
pDC->SetWindowExt((Ymax-Ymin)*dx,-(Xmax-Xmin)*dx);
改成
pDC->SetWindowExt(0.5*rect.right,-0.5*rect.bottom);
字体大小好像差不多
不过如果图太大时会显示不全
不知道我的实际坐标x,y该做怎样的变换才能在窗口中以合适的大小显示出来,请各位指点。