使用C#在页面上打印图像

时间:2017-08-28 17:18:38

标签: c# image printing

我有一个256x256 .ico,我想通过我的C#语法打印。这是我的语法

Image logoImage = global::Winform1.Properties.Resources.KA0_icon.ToBitmap();
Rectangle LogoRect = new Rectangle(m_leftMargin, m_leftMargin, (int)(logoImage.Width * 0.75), (int)(logoImage.Height * 0.8));
e.Graphics.DrawImage(logoImage, LogoRect);
e.Graphics.DrawRectangle(Pens.LightBlue, LogoRect);

但这会引发错误:

  

类型' System.ArgumentOutOfRangeException'的例外情况发生在mscorlib.dll但未在用户代码中处理
  附加信息:请求的范围超出了数组的末尾

为了在我打印的页面顶部显示.ico文件,我该怎么做?

修改
根据以下建议,我也尝试了这种语法

Image logoImage = Bitmap.FromHicon(global::Winform1.Properties.Resources.KA0_icon, new Size(48, 48).Handle);

然而这给了我一个错误

  

尺寸'不包含' Handle'的定义没有延伸方法'处理'接受类型'大小'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

2 个答案:

答案 0 :(得分:0)

看看这个类似的问题:

Displaying an icon in a picturebox

它提到了同样的例外。要进行转换,您可能会成功做到这样的事情:

Bitmap.FromHicon(global::Winform1.Properties.Resources.KA0_icon.Handle);

或者可能:

Bitmap.FromHicon(new Icon(global::Winform1.Properties.Resources.KA0_icon, new Size(256, 256)).Handle);

答案 1 :(得分:0)

你必须调试。检查你想要的图像是否足够大。 ArgumentOutOfRangeException意味着你正在做的事情不在范围内,所以只要看看你的图像,图标和矩形有多大并进行比较。

并提示:你应该考虑写下(int)(logoImage.Width * 0.75f)我所学到的东西,因为我有时会得到不可靠的价值。