Отображение значка в picturebox
Я пытаюсь отобразить 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()
как преодолеть эту проблему?
спасибо.
3 ответов
решена проблема.
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);
}
