【问题标题】:Print An Image On Page With C#使用 C# 在页面上打印图像
【发布时间】:2017-08-28 17:18:37
【问题描述】:

我有一个 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);

但是这给了我一个错误

Size 不包含“Handle”的定义,并且找不到接受“Size”类型的第一个参数的扩展方法“Handle”(您是否缺少 using 指令或程序集引用?)

【问题讨论】:

  • 您可能需要与我们分享您的 KA0_icon 以重现您遇到的错误。
  • @LarsTech - 所以不允许我上传 .ico 类型的文件。想法?
  • Icon.ToBitmap() 有点蹩脚,您必须针对 .NET 4.6 或更高版本以避免此异常。这不是明智的做法,请改用 Graphics.DrawIcon() 方法。也给你更好的机会不要忘记使用 using 语句,图标应该被释放。
  • @HansPassant - 你能提供一个示例或语法的链接吗?

标签: c# image printing


【解决方案1】:

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

还有一个提示:你应该考虑写(int)(logoImage.Width * 0.75f) 这是我学到的,因为我有时会得到不可靠的值。

【讨论】:

  • 或许你可以告诉我们,哪一行报错了!?
  • 我上面帖子的第一行。
  • 你真的应该像上面发布的那样访问这个page
  • 我访问过那个页面。在那里尝试了语法,但仍然有错误,请参阅我的编辑。
  • 大括号去哪儿了?
【解决方案2】:

看看这个类似的问题:

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);

【讨论】:

  • 我尝试了您提供的两个示例,但仍然得到相同的错误:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多