2017-04-15 77 views
3

我有一個圖片框,並在其中打印內容。我想知道毫米文本的確切textwidth。但是我得到錯誤的價值。這裏是我的代碼Textwidth以毫米顯示不正確vb6

me.scalemode = vbmillimeters 
picturebox.scalemode = vbmillimeters 

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

當我在打印輸出測量紙張它爲48mm 但它表明32.97毫米

請幫我在哪裏,我錯了。 在此先感謝

回答

4

如果需要打印的圖片框的文本的寬度,使用:

PictureBox.textwidth("AB.C.D.E. FGHIJKLMN")

什麼你實際上是這樣做的:textwidth("AB.C.D.E. FGHIJKLMN")被mesuring打印到形式相同的文本( Me)。

做這樣會更不容易出錯:

Dim TextWidth as Single 
With PictureBox 
    .ScaleMode = vbMillimeters 
    .FontName = "Arial" 
    .FontSize = 12 
    TextWidth = .TextWidth("AB.C.D.E. FGHIJKLMN") 
End With 

因爲如果你再切換到紙上,你也可以輕鬆切換背景:

With SelectedPrinter.... 
+0

感謝花花公子。它的工作......愚蠢的錯誤。 – srinivasan

+1

當然,它會在某些高DPI設置下失敗。 VB6使用OLE中的某些功能來執行這些縮放,這在某些DPI設置(如200%(192 DPI))下會略微偏離。 7.5緹/像素在內部被截斷爲7,拋棄所有東西。不要指望微軟能夠修復它。無論如何,除非您的程序標記爲DPI-Aware,否則您將不會看到此內容。 – Bob77