2017-04-15 10 views
3

私は画像ボックスを持っていて、その中に内容を印刷しています。私はミリメートル単位のテキストの正確なテキスト幅を知りたい。しかし、私は間違った価値を得る。ここで私はそれが48ミリメートル ある紙にプリントアウトして測定したときに私のコードテキスト幅がミリメートルで正しく表示されないvb6

me.scalemode = vbmillimeters 
picturebox.scalemode = vbmillimeters 

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

ですが、それは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は、200%(192 DPI)などのいくつかのDPI設定でビットをオフにしているスケーリングを実行するためにOLEの何かを使用します。 7.5 twips/pixelは内部的に7に切り捨てられ、すべてがスローされます。 Microsoftがそれを直すとは思わないでください。とにかくあなたのプログラムがDPI-Awareとマークされていない限り、これは表示されません。 – Bob77

関連する問題