printdocument打印一寸图片比例问题
我想在A4纸上打印多张一寸图片,采用printdocumnet,但是如果按原始比例打印会出现如下情况:
1、图片可正常显示,但是图片之间的间距不能用像素定位,因为有人说不同的电脑像素表示的大小 是不一样的,这样就会出现我电脑上正常,别 人可能不正常,采用的方法是drawimageunscale()
2、如果采用方法drawimage()又会不按比例打印,而且大的离谱,一行只能放两张半,请问应该如何操作才能正常打印图片
这是图像比例正常,但是间距不正常的情况 ,下一张是图像不正常的情况
以下是主要代码 :
public void bazxcy_printEvent()
{
//PaperSize ps = new PaperSize("A4", 2479, 3508);
// pdDocument.DefaultPageSettings.PaperSize = ps;
PaperSize ps = new PaperSize("Your Paper Name", 100, 70);
ps.RawKind = 9;
pdDocument.DefaultPageSettings.PaperSize = ps;
//订阅EndPrint事件,释放资源
pdDocument.PrintPage += new PrintPageEventHandler(OnPrintPage);
//订阅Print打印事件,该方法必须放在订阅打印事件的最后
StartPrint();
}
private int j = 0;//为for循环定义一个初始化变量,可以在return后重新走循环下一个值。
/// <summary>
/// 2、得到打印内容-每个打印任务只调用OnBeginPrint()一次。
/// 3、并判断是否绘制多个打印界面
/// printDocument的PrintPage事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnPrintPage(object sender, PrintPageEventArgs e)
{
pageCount = dt.Rows.Count/16;//定义页数
for (int i = j*16; i < dt.Rows.Count; i++)
{
//打印内容加载
FileStream fs = new FileStream(dt.Rows[i]["ImageName"].ToString(), FileMode.Open, FileAccess.Read);
image=Image.FromStream(fs);
//以下为绘制打印界面
int leftMargin = Convert.ToInt32((e.MarginBounds.Left) * 3 / 4); //左边距