MeasureText() - SizeF到英寸

时间:2014-04-23 22:07:11

标签: vb.net dymo

我想我不知道要使用哪些搜索字词,这应该很简单...我要确定字符串的宽度(以英寸为单位)。

        Dim sSize As System.Drawing.SizeF
        Dim fFont As New Font("Arial", 12)
        sSize = Me.CreateGraphics().MeasureString(txtAddr.Text, fFont)

这里的单位是IDE使用的任何单位。我不确定这是一个常数值,如果转换应该是直截了当的。

无论如何,当我使用指定的字体以100%打印文本时,我想将返回的单位转换为英寸。我该怎么做?


谢谢汉斯!

        Dim boxGraphics As Graphics = txtAddr.CreateGraphics()
        Dim sSize As System.Drawing.SizeF = boxGraphics.MeasureString(txtAddr.Text, New Font("Arial", 12))
        Dim iInches As Single = sSize.Width / boxGraphics.DpiX

DYMO LabelWriter 450代码的开头,可能会引起您的兴趣:

        ' project ref to DYMO.Label.Framework .net 3.5/4
        ' Imports DYMO.Label.Framework
        Dim olabel As Label
        olabel = Label.Open("H:\INFO\Forms\ADMIN\Dymo Labels\APCDAddress.label")
        olabel.SetObjectText("ADDRESS", txtAddr.Text) ' case sensitive
        olabel.Print("\\PC3090-117\DYMO LabelWriter 450 Twin Turbo")
        MsgBox("Printed")

我将添加代码来处理可能对标签来说太大的地址文本,因此OP。可以将DYMO布局设置为缩小以适合文本,但在制作地址标签时具有实际限制。

1 个答案:

答案 0 :(得分:3)

来自@HansPassant:除以Graphics.DpiX

   Dim boxGraphics As Graphics = txtAddr.CreateGraphics()
    Dim sSize As System.Drawing.SizeF = boxGraphics.MeasureString(txtAddr.Text, New Font("Arial", 12))
    Dim iInches As Single = sSize.Width / boxGraphics.DpiX