在图片框中显示图标
本文关键字:显示 显示图 图标 | 更新日期: 2023-09-27 18:07:07
我试图在图片框中显示icon file
。我用这段代码来设置图像。
pictureBox1.Image = new Icon(openFileDialog.FileName, new Size(48, 48)).ToBitmap();
但是我得到了这个异常。
System.ArgumentOutOfRangeException: Requested range extends past the end of the array.
at System.Runtime.InteropServices.Marshal.CopyToNative(Object source, Int32 startIndex, IntPtr destination, Int32 length)
at System.Runtime.InteropServices.Marshal.Copy(Byte[] source, Int32 startIndex, IntPtr destination, Int32 length)
at System.Drawing.Icon.ToBitmap()
如何克服这个问题?
谢谢。
问题解决了
pictureBox1.Image = Bitmap.FromHicon(new Icon(openFileDialog.FileName, new Size(48, 48)).Handle);
一些图标的大小不正确,从48x48到32x32。
我最后的代码是:
Bitmap _image;
try
{
_image = new Icon(icon, width, height).ToBitmap();
}
catch(ArgumentOutOfRangeException)
{
_image = Bitmap.FromHicon(new Icon(icon, new Size(width, height)).Handle);
}
有时Bitmap.FromHicon
不能完全转换。我找到了另一个解决方案:
// event Paint of pictureBox1
void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawIcon(theIcon, 0, 0);
}