ラベルを印刷したい。印刷コンテキストGraphicsオブジェクトに描画すると、問題なく動作します。しかし、一時的なビットマップを使用すると、描画されたテキストはすべてピクセル化されます。 tempビットマップと印刷グラフィックスオブジェクトの解像度が異なることを認識しました(96 dpi対600 dpi)。そこで、ビットマップ解像度を印刷解像度に合わせて変更します。そのため、描画されたテキストはすべて大きすぎます。一時的なビットマップで高解像度を印刷
印刷する前にイメージを回転するには、一時的なビットマップが必要です。
このビットマップを正しく印刷する方法を教えてください。
Pixalatedコード:(悪いに見えますが、一時的なビットマップを持っている)
// print event handler
private void printPage(object sender, PrintPageEventArgs ev)
{
// size of the page
Size s = Form1.getPixelFromCM(Properties.Settings.Default.LabelSize);
// temporary bitmap object
Bitmap bmp = new Bitmap(s.Width, s.Height);
Graphics g = Graphics.FromImage(bmp);
// draw text
labels[printLabelsIndex].PrintLabel(g);
// draw the bitmap to the page
ev.Graphics.DrawImage(bmp, 0, 0);
}
このコードは、このプリントを生成します。
高解像度コード:は(よさそうだけど私は一時的なビットマップが必要です!)
// print event handler
private void printPage(object sender, PrintPageEventArgs ev)
{
// draw text directly to print context
labels[printLabelsIndex].PrintLabel(ev.Graphics);
}
このコードは、このプリントを生成します。
ビットマップを6倍大きくする必要があります。それを6倍小さくします。 Graphics.Clear()を使用して背景色を設定することを忘れないでください。忘れてしまった場合、アンチエイリアスは正しく機能しません。これを正しい方法で行うだけで、Graphics.Transformプロパティを使って出力を回転させます。 Matrix.RotateAt()メソッドは便利な便利なメソッドです。 –
Graphics.Clear()は良い点でした。 AAは今働きます。しかし、それは間違った解像度のためにまだピクセル化されています。 – Michael