1

通常の GDI+/.NET メソッドを使用して 7.5X8 cm のラベルをラベルプリンターで印刷していますが、正常に動作します。

void pdPrintLabel(object sender, PrintPageEventArgs ev)
{
  Graphics g = ev.Graphics;  

  using (Font smallFont = new Font(FontFamily.GenericSansSerif, 6),
              mediumFont = new Font(FontFamily.GenericSansSerif, 8),
              bigFont = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold))
  {
    SizeF smallSize = g.MeasureString("XXX", smallFont);
    SizeF mediumSize = g.MeasureString("XXX", mediumFont);
    SizeF bigSize = g.MeasureString("XXX", bigFont);

    Brush blackBrush = Brushes.Black;

    g.DrawString((bagNumber / 50 + 1) + bagNumber, bigFont, blackBrush, pos);
    // etc
  }
}

現在、プリンターが変更されています。同じモデルのプリンターが異なるだけです。同じコードがラベルの半分だけを埋めるようになりました。一部設定が違うと思います。私はこれを修正することができました

ev.Graphics.ScaleTransform(1.3f, 1.4f);

ただし、引数を微調整/再コンパイル/テストした後でのみ。もちろん、新しいプリンターが使用されるたびにそのコードを変更したくありません。では、正しい ScaleTransform 引数を計算するためのアルゴリズムはありますか?

編集:

その上、あるプリンターから設定をインポートして別のプリンターにエクスポートしても、何も変わりませんでした

4

1 に答える 1