2013-03-18 35 views
0

这次我有一个希望很简单的问题:我想打印循环打印并以每页2×2打印的项目。我为此使用了一个循环,并使用了一个Rectangle数组。这可以改变。打印到图形的某个部分最简单的方法是什么? 上下文是我做它在打印时,使用附带的e.Graphics对象 - 当前的代码如下所示:将4个相似的图像打印到一个文档c#

public void BeginPrintEvent(object sender, PrintPageEventArgs e) 
{ 
    SizeF TestSize; 
    string text = ""; 
    Image labelImage = new Bitmap((int)e.Graphics.DpiX, (int)e.Graphics.DpiY, e.Graphics); 
    Graphics g = e.Graphics; 
    Rectangle[] rect = new[] { new Rectangle(0, 0, 419, 581), 
           new Rectangle(419, 0, 419, 581), 
           new Rectangle(0, 581, 419, 581), 
           new Rectangle(419, 581, 419, 581) }; 

    try 
    { 
     for (int lblNum = 0; lblNum < 4); lblNum++) 
     { 
      g.DrawString(// lots of stuffs 
      e.Graphics.DrawImage(labelImage, rect[lblNum]); 
     } 
    } 
    catch (Exception exc) 
    { 
     // Report to user 
    } 
} 

我似乎无法得到正确成像,大小趋于非常小,因此大部分图像都会丢失。

+0

你已经回答了你的问题“太小”,为什么你的新形象有这么小的渔政船? – Sinatr 2013-03-18 15:16:16

+0

@Sinatr大概我正在以正确的方式检索大小。 e.Graphics对象中没有明确的'Width'或'Height'成员。我拥有的是一些邪恶的剪辑使用。 – Whoop5 2013-03-19 07:35:36

+0

'Image labelImage = new Bitmap(419,581,e.Graphics);' – Sinatr 2013-03-19 10:47:14

回答

0

算出来的:

Image labelImage = new Bitmap(419 * ((int)e.Graphics.DpiX/100), 581 * ((int)e.Graphics.DpiX/100), e.Graphics); 

干杯注意到后虽然Sinatr :)