我想打印标签。如果我绘制到打印上下文Graphics对象,它的工作没有问题。但是,如果我使用临时位图,则所有绘制的文本都是像素化的。我认识到临时位图和打印图形对象的分辨率是不同的(96 dpi与600 dpi)。所以我改变了位图分辨率以匹配打印分辨率。所以绘制的文字都太大了。
我需要临时位图才能在打印前旋转图像。
如何正确打印此位图?
Pixalated code:(看起来很糟糕,但有临时位图)
// 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);
}
此代码生成此打印:
答案 0 :(得分:0)
Graphics.DrawImage
尊重Bitmap的分辨率是一件好事,虽然它有时会导致混淆,当人们认为拼图的所有部分具有相同的分辨率时。
在这里,您需要显式设置临时位图的分辨率,否则只需继承屏幕分辨率..:
bmp.SetResolution(600,600)
当然现在的标签'尺寸可能不够大..
还要注意术语的问题:分辨率可能意味着大小,即像素或打印机点,但实际上应该是密度,即dpi
或'每英寸点数' 。
您希望调出和的尺寸以及dpi
!