1

プリンタを MM に設定しています。次のコードを使用して、印刷時にテキストを中央に配置する方法を見つけようとしています。

Dim CentrePage As Single
CentrePage = Convert.ToString((e.PageBounds.Width / 2) - (e.Graphics.MeasureString("SENpic Report - " & Format(Now, "dddd, dd MMMM, yyyy") & " - Page " & prnPage, f).Width / 2))
e.Graphics.DrawString("SENpic Report - " & Format(Now, "dddd, dd MMMM, yyyy") & " - Page " & prnPage, f, br, CentrePage, 17)

単位の問題であることがわかりました.1つはMMだと思いますが、もう1つの単位がわからないため、換算係数を計算できません.

何か案は?

4

3 に答える 3

3

PrintPage イベント ハンドラで取得するデフォルトの Graphics.PageUnit は GraphicsUnit.Display です。これは、100 ピクセルを 1 インチにマップします。これは便利な設定です。紙に描いたオブジェクトを、画面に描いたときとほぼ同じサイズにします。ビデオ アダプタは、通常、1 インチあたり 96 ドットの解像度で動作します。プリンターと画面の両方で機能するグラフィックス コードを作成するのに役立ちます。

単純に再割り当てできます。もちろん、GraphicsUnit.Millimeter を探しています。

これは、テキストのセンタリングにはまったく影響しないことに注意してください。もちろん、これはミリメートル単位でも 0.01 インチ単位でも同じように機能します。

于 2014-03-17T14:40:24.137 に答える
1

多くのいじりの後、私はそれをやった:

基本的に、Graphics Unit を ミリメートルに設定します。これが設定されていても、ページ境界はピクセル単位で返されますが、メジャー文字列はミリメートルを返します。

多くの試行錯誤の後、ページ境界をミリメートルに変換するには、0.264583333 を掛ける必要があることがわかりました。これは MM のピクセルのサイズです。

コードは次のとおりです。

e.Graphics.PageUnit = GraphicsUnit.Millimeter
Dim f As Font = New Font("Vanada", 12)
Dim br As SolidBrush = New SolidBrush(Color.Black)
Dim CentrePage As Single
Dim CentreText As String = "My Report - " & Format(Now, "dddd, dd MMMM, yyyy") & " - Page " & prnPage
CentrePage = Convert.ToString(((e.PageBounds.Width * 0.264583333) / 2) - (e.Graphics.MeasureString(CentreText, f).Width / 2))
e.Graphics.DrawString(CentreText, f, br, Int(CentrePage), 17)

これが他の人に役立つことを願っています。

于 2014-03-19T20:56:34.257 に答える
0

e.Graphics.PageUnit = GraphicsUnit.Millimeter e.Graphics.DrawString(TextBox1.Text, New Font("ARIAL", 12, FontStyle.Bold Or FontStyle.Italic), Brushes.Red, 105, 30, YAZI_ORTA)

于 2021-05-11T11:30:24.773 に答える