C#,如何获取纸张大小(以像素为单位)?

时间:2011-05-16 08:35:58

标签: c# printing

我正在尝试打印存储在BMP图像中的表格。我事先并不知道表格大小,纸张尺寸或打印机分辨率。虽然桌子适合1页,但一切都很好,但是当它变得比纸张大时,c#就会切断桌子的提醒。

据我所知,我必须手动将图像拆分成几个较小的图像并在单独的页面上打印每个图像,但我在确定拆分位置时遇到问题。我的问题是,我可以获得像素尺寸,但是纸张尺寸以英寸为单位,所以我不知道桌子上有多少可以放在一张纸上。如何以相同的单位获得两个值?

2 个答案:

答案 0 :(得分:0)

var img = Image.FromFile("img.jpg");
var w = i.Width / img.HorizontalResolution; //in Inches
var h = i.Height / img.VerticalResolution;  //in Inches

答案 1 :(得分:0)

这通常是通过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
...