【问题标题】:Textwidth not showing correctly in millimeters vb6以毫米为单位的文本宽度未正确显示 vb6
【发布时间】:2017-04-15 06:11:44
【问题描述】:

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

me.scalemode = vbmillimeters
picturebox.scalemode = vbmillimeters

picturebox.fontname = "Arial"
picturebox.fontsize = 12
debug.print textwidth("AB.C.D.E. FGHIJKLMN")

当我在打印输出中测量时,它是 48 毫米 但它显示 32.97mm

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

【问题讨论】:

    标签: vb6


    【解决方案1】:

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

    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/pixel 在内部被截断为 7,把所有东西都扔掉了。不要指望微软会修复它。除非您的程序被标记为 DPI-Aware,否则您不会看到这一点。
    猜你喜欢
    • 2016-05-29
    • 2013-09-16
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多