C# 如何打印高清晰度图像?
打印机分辨率通常是屏幕分辨率的5-6倍。打印机的分辨率可以在6600 x 5100左右,而全高清屏幕的分辨率为1920 x 1080 1920 x 1080图像在屏幕上看起来很棒,但为了避免像素化,理想情况下应向打印机渲染更高分辨率的图像,例如6600 x 5100图像 我正在尝试将高清晰度图像(6600 x 5100)打印到我的高清晰度打印机(600 dpi),但我发现可用的打印区域仅为e.PageBounds指定的850 x 1100;请参阅下面的代码:C# 如何打印高清晰度图像?,c#,printing,high-resolution,barcode-printing,system.printing,C#,Printing,High Resolution,Barcode Printing,System.printing,打印机分辨率通常是屏幕分辨率的5-6倍。打印机的分辨率可以在6600 x 5100左右,而全高清屏幕的分辨率为1920 x 1080 1920 x 1080图像在屏幕上看起来很棒,但为了避免像素化,理想情况下应向打印机渲染更高分辨率的图像,例如6600 x 5100图像 我正在尝试将高清晰度图像(6600 x 5100)打印到我的高清晰度打印机(600 dpi),但我发现可用的打印区域仅为e.PageBounds指定的850 x 1100;请参阅下面的代码: Bitmap bitmapToPri
Bitmap bitmapToPrint;
public void printImage()
{
bitmapToPrint = new Bitmap(1700,2200);
Font font = new Font(FontFamily.GenericSansSerif, 60, FontStyle.Regular);
string alphabet = "abcdefghijklmnopqrstuvwxyz";
Graphics graphics = Graphics.FromImage(bitmapToPrint);
graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 0);
graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 1000);
PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";
pd.PrinterSettings.PrintToFile = true;
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.Print();
}
void pd_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(bitmapToPrint, new PointF(0, 0));
//Have a look at e.PageBounds, the dimensions are only 850x1100
}
正如RogerN所指出的,要解决此问题,DrawImage调用必须简单地替换为:
e.Graphics.DrawImage(位图打印、新矩形F(0.0f、0.0f、850.0f、1100.0f))代码>在这种情况下,页面边界以百分之一英寸为单位指定(8.5“x 11”=850 x 1100),与打印机分辨率无关。如果您的图像已经具有高分辨率,则不需要执行任何其他操作,只需使用所需的目标矩形调用DrawImage
。只需确保指定的目标矩形的单位与页面边界的单位相同。我刚刚使用1700 x 2200位图进行了测试,它只在左上角打印了850 x 1100区域。请编辑您的问题,以包含用于执行测试的确切代码。我怀疑您没有提供图像的目标大小。好的,我已经用确切的代码更新了我的问题。您需要为图像指定目标大小:e.Graphics.DrawImage(BitMapTopPrint,新矩形F(0.0f,0.0f,850.0f,1100.0f));但请注意,您可能还需要考虑页边距,页边距不能始终打印。在这种情况下,页边距以百分之一英寸为单位指定(8.5“x 11”=850 x 1100),与打印机分辨率无关。如果您的图像已经具有高分辨率,则不需要执行任何其他操作,只需使用所需的目标矩形调用DrawImage
。只需确保指定的目标矩形的单位与页面边界的单位相同。我刚刚使用1700 x 2200位图进行了测试,它只在左上角打印了850 x 1100区域。请编辑您的问题,以包含用于执行测试的确切代码。我怀疑您没有提供图像的目标大小。好的,我已经用确切的代码更新了我的问题。您需要为图像指定目标大小:e.Graphics.DrawImage(BitMapTopPrint,新矩形F(0.0f,0.0f,850.0f,1100.0f));但请注意,您可能还需要考虑页边距,因为页边距不能始终打印