C#,如何获得以像素为单位的纸张大小?

C#,如何获得以像素为单位的纸张大小?,c#,printing,C#,Printing,我正在尝试打印存储在BMP图像中的表格。我事先不知道表格大小、纸张大小或打印机分辨率。虽然这张桌子可以放进一页,但一切都很好,但当它比那张纸大时,c#只是切断了桌子的提示 我知道我必须手动将图像分割成几个较小的图像,并将每个图像打印在单独的页面上,但我在决定分割位置时遇到了问题。我的问题是,我可以得到以像素为单位的表格尺寸,但表的大小以英寸为单位,所以我不知道一张表可以容纳多少表格。如何以相同的单位获取这两个值?这通常通过System.Drawing.Printing.PrintPageEven

我正在尝试打印存储在BMP图像中的表格。我事先不知道表格大小、纸张大小或打印机分辨率。虽然这张桌子可以放进一页,但一切都很好,但当它比那张纸大时,c#只是切断了桌子的提示


我知道我必须手动将图像分割成几个较小的图像,并将每个图像打印在单独的页面上,但我在决定分割位置时遇到了问题。我的问题是,我可以得到以像素为单位的表格尺寸,但表的大小以英寸为单位,所以我不知道一张表可以容纳多少表格。如何以相同的单位获取这两个值?

这通常通过System.Drawing.Printing.PrintPageEventArgs类完成

var img = Image.FromFile("img.jpg");
var w = i.Width / img.HorizontalResolution; //in Inches
var h = i.Height / img.VerticalResolution;  //in Inches
由于您可以选择具有不同DPI分辨率的不同打印机,因此像素大小会有所不同。 因此,最好通过事件读取此属性

您需要像这样启动打印:

PrintDocument _printDocument = new PrintDocument();
_printDocument.PrintPage += new PrintPageEventHandler(_printDocument_PrintPage);
...
void _printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
int pageWidth = e.PageBounds.Width
...

这通常通过System.Drawing.Printing.PrintPageEventArgs类完成

由于您可以选择具有不同DPI分辨率的不同打印机,因此像素大小会有所不同。 因此,最好通过事件读取此属性

您需要像这样启动打印:

PrintDocument _printDocument = new PrintDocument();
_printDocument.PrintPage += new PrintPageEventHandler(_printDocument_PrintPage);
...
void _printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
int pageWidth = e.PageBounds.Width
...