12

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

この問題を克服するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

12

問題を解決しました。

pictureBox1.Image = Bitmap.FromHicon(new Icon(openFileDialog.FileName, new Size(48, 48)).Handle);
于 2013-04-03T09:06:31.517 に答える
4

一部のアイコンのサイズが 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);
    }
于 2015-10-27T15:56:39.397 に答える