我有一个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'的定义没有延伸方法'处理'接受类型'大小'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
答案 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)
我所学到的东西,因为我有时会得到不可靠的价值。