关于GetTextExtentPoint32的问题(50分)

  • 主题发起人 主题发起人 sentiment
  • 开始时间 开始时间
S

sentiment

Unregistered / Unconfirmed
GUEST, unregistred user!
我用GetTextExtentPoint32想得到一段文字的EXTENT,但是出现了一个问题,<br>就是我得到的值和用CANVAS.EXTENT得到的不一样。<br>如果EDIT1中文字为“EDIT1”的话,将显示内容为33*****24的对话框。显然,我得到的值和CANVAS.TEXTWIDTH不同<br>请问为什么?<br>代码如下<br>procedure TForm1.Button1Click(Sender: TObject);<br>Var StrTemp:String;<br>&nbsp; &nbsp; H:HDC;<br>&nbsp; &nbsp; S:TSize;<br>begin<br>&nbsp; &nbsp;StrTemp:=Edit1.Text ;<br>&nbsp; &nbsp;H:=GetDC(Edit1.Handle);<br>&nbsp; &nbsp;if GetTextExtentPoint32(H,PChar(StrTemp),Length(StrTemp),S)=True then<br>&nbsp; &nbsp; &nbsp; ShowMessage(IntToStr(S.cx)+'*****'+IntToStr(Canvas.TextWidth(StrTemp)))<br>&nbsp; &nbsp;else<br>&nbsp; &nbsp; &nbsp; ShowMessage('False');<br>end;<br><br>end.<br>
 
难道又没有人回答,我FAINT
 
你用GetTextExtentPoint32是根据Edit1的DC来得到的值,而Canvas.TextWidth确是根据Form1的Canvas来得到的值,<br>因为Edit1的DC所包含的字体和Form1.Canvas所包含的字体不一样,当然得到的结果就不一样了!
 
后退
顶部