CreatePointFont创建的一个字他的宽是多少像素亚怎么计算的亚
比如font.CreatePointFont(80,"Arial", &dc);
它的宽是多少像素
问题点数:0、回复次数:11Top
1 楼tyzyx(疯狂的人生)回复于 2004-09-01 15:08:52 得分 0
记不清了,去看看program windows 一书。Top
2 楼lastman001()回复于 2004-09-01 15:14:38 得分 0
有的说是10:1
可是我试验的不像Top
3 楼lastman001()回复于 2004-09-01 15:46:11 得分 0
up呀
Top
4 楼bobob(静思)回复于 2004-09-01 16:49:28 得分 0
查查msdn吧,里面应该有。Top
5 楼zhushizu(从来就没有救世祖)回复于 2004-09-01 17:11:58 得分 0
这个问题对我这个菜鸟级的人来说还是难了一点点,不过还是要帮楼主顶一下...因为菜鸟也想知道答案....关注中!Top
6 楼zhaogaojian(米柑年成-WWW.VSFAN.NET)回复于 2004-09-01 17:17:25 得分 0
有一段类似代码
CRect CDrawText::Count_Size(CString aqie)
{CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CGraphView *pView=(CGraphView *)pMain->GetActiveView();
CDC* pDC =pView->GetDC();
CFont font;
LOGFONT m_logfonttemp;
m_logfonttemp=m_logfont;
m_logfonttemp.lfHeight=CountHeight(m_logfonttemp.lfHeight);
font.CreateFontIndirect(&m_logfonttemp);
CFont *pFont=pDC->SelectObject(&font);//字体要和Draw中子体一杨
pDC->SetMapMode(MM_HIMETRIC);//视图映射模式
CString tempString;
CString string;
CString findstring("\n" );
CSize haha;
CSize TotalSize = CSize(0,0);
CRect aa = Size_Of_Text;
int hang = 0,j = 0,line = 0,lie = 0;
string = aqie;
if(!string.IsEmpty())
{
line = string.GetLength();
j = string.Find( findstring);
while(j != -1)
{hang = j;
tempString = string.Left( j );
string = string.Right( line-j-1 );
line = line-j-1;
j = string.Find( findstring );
if(hang<j) hang = j;
lie++;
haha = pDC->GetTextExtent(tempString);
TotalSize = AddToMySize(TotalSize,haha);
}
if((j == -1)&&(lie == 0))
{haha = pDC->GetTextExtent(string);
Size_Of_Text = CRect(aa.TopLeft(),haha);
}
else if((j == -1)&&(lie != 0))
{haha = pDC->GetTextExtent(string);
TotalSize = AddToMySize(TotalSize,haha);
Size_Of_Text = CRect(aa.TopLeft(),TotalSize);
}
}
else{
Size_Of_Text = CRect(0,0,0,0);
}
pDC->SelectObject(pFont);
font.DeleteObject();
pView->ReleaseDC(pDC);//释放DC资源
return Size_Of_Text;
}Top
7 楼zhaogaojian(米柑年成-WWW.VSFAN.NET)回复于 2004-09-01 17:17:52 得分 0
CSize CDrawText::AddToMySize(CSize total, CSize add)
{CSize T1;
T1 = total;
if(T1.cx<add.cx)
T1.cx = add.cx;
T1.cy += add.cy+1;
return T1;
}Top
8 楼wwwllg(野蛮人)回复于 2004-09-01 19:12:37 得分 0
先得到罗辑的每个点实际的物理点个数
然后* 80Top
9 楼huwei001982(凶猛的小狗)回复于 2004-09-01 21:18:37 得分 0
看 MSDN吧!
第一个参数: Requested font height in tenths of a point
十分之一点(例如输入 120, 表示大小为 12点)
It automatically converts the height in nPointSize to logical units using the CDC object pointed to by pDC
它自动根据CDC将高度从 "点" 转换为逻辑单元
由此可见, 跟映射模式相关的Top
10 楼lastman001()回复于 2004-09-06 09:14:37 得分 0
upTop
11 楼weakwater(我是河南人)回复于 2004-09-06 17:56:57 得分 0
帮你UPTop




