【发布时间】: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 - 你能提供一个示例或语法的链接吗?