言語: VB .NET2010Winフォーム
範囲: カスタムラベルをゼブラプリンターに印刷することを目的としたラベル印刷プログラムを開発しました。ラベル全体を画像として印刷しようとしたときに、プリンタからの明瞭さに問題があったため、ラベルから配列にすべてのテキストを保存し、ラベルをクリアして、残った画像をプリンタに送信しようとしています。保存された配列に基づいて新しいテキストをオーバーレイします。この結果は、画像ではなくテキストをプリンタに送信することを目的としています。
問題: 結果のラベルは、希望どおりにテキストに対して非常に明確ですが、印刷方法の位置合わせに問題がありました。テストでは、元の画像を表示し、その上にオーバーレイテキストを表示します。このテキストに完全に揃えるか、適切な範囲内で閉じる必要があります。これを行うと、結果としてそれらは整列されません。
テスト:
Dim g2 As Graphics
g2 = Form1.PictureBox2.CreateGraphics
g2.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
g2.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
g2.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g2.Clear(Color.White)
g2.DrawImage(largeimage, New Point(0, 0))
Dim myBrush As Brush
Dim i As Integer = 0
Do Until i = label_array.Count - 1
myBrush = New SolidBrush(label_array(i).ForeColor)
g2.DrawString(label_array(i).Text, label_array(i).Font, myBrush, label_array(i).Location)
i = i + 1
Loop
印刷方法では、上記の方法を使用して、オーバーレイと画像を画像ボックスに出力しました。これを行うとき、しかし、それは機能します...
e.Graphics.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
e.Graphics.Clear(Color.White)
e.Graphics.DrawImage(largeimage, New Point(0, 0))
i = 0
Do Until i = label_array.Count - 1
myBrush = New SolidBrush(label_array(i).ForeColor)
e.Graphics.DrawString(label_array(i).Text, label_array(i).Font, myBrush, label_array(i).Location)
i = i + 1
Loop
..上記の印刷グラフィックにそれを行うと、ミスアライメントが発生します。
何でもやってみますので、どんなアイデアでも大歓迎です。印刷グラフィックは、私が気付いていない通常のグラフィックから追加の何かをしていると思います。
TextRenderer.DrawTextがDrawStringと比較して結果を改善することに気づきました。ただし、これを使用すると、結果は元のスケーリング係数から未知のスケーリング係数でスケーリングされているように見えます...
以下は、元のオーバーレイの上に作成されたオーバーレイです。