Textwidth未正确显示,单位为毫米vb6

Textwidth未正确显示,单位为毫米vb6,vb6,Vb6,我有一个图片框,我在里面打印内容。我想知道确切的文本宽度,以毫米为单位。但我得到了错误的值。这是我的密码 me.scalemode = vbmillimeters picturebox.scalemode = vbmillimeters picturebox.fontname = "Arial" picturebox.fontsize = 12 debug.print textwidth("AB.C.D.E. FGHIJKLMN") 当我在打印纸上测量时,它是48毫米 但显示为32.97毫米

我有一个图片框,我在里面打印内容。我想知道确切的文本宽度,以毫米为单位。但我得到了错误的值。这是我的密码

me.scalemode = vbmillimeters
picturebox.scalemode = vbmillimeters

picturebox.fontname = "Arial"
picturebox.fontsize = 12
debug.print textwidth("AB.C.D.E. FGHIJKLMN")
当我在打印纸上测量时,它是48毫米 但显示为32.97毫米

请帮助我哪里错了。
提前感谢

如果您需要打印到图片框的文本宽度,请使用:

PictureBox.textwidth(“AB.C.D.E.FGHIJKLMN”)

实际操作:
textwidth(“AB.C.D.E.FGHIJKLMN”)
正在测量打印到表单上的相同文本(
Me

这样做不太容易出错:

Dim TextWidth as Single
With PictureBox
  .ScaleMode = vbMillimeters
  .FontName = "Arial"
  .FontSize = 12
  TextWidth = .TextWidth("AB.C.D.E. FGHIJKLMN")
End With
因为如果您随后切换到纸张,您还可以轻松切换上下文:

With SelectedPrinter....

当然,在某些高DPI设置下,它会失败。VB6使用OLE中的某些东西来执行这些缩放,在某些DPI设置(例如200%(192 DPI))中有些不正确。7.5 twips/像素在内部被截断为7,这会使所有内容都消失。不过,别指望微软会解决这个问题。除非您的程序被标记为DPI-Aware,否则您不会看到这一点。