2013-04-03 13 views
9

Próbuję wyświetlić icon file w ramce graficznej. Używam tego kodu do ustawienia obrazu.Wyświetlanie ikony w skrzynce obrazkowej

pictureBox1.Image = new Icon(openFileDialog.FileName, new Size(48, 48)).ToBitmap(); 

Ale otrzymuję ten wyjątek.

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

Jak przezwyciężyć ten problem?

Dzięki.

Odpowiedz

4

Rozwiązano problem.

pictureBox1.Image = Bitmap.FromHicon(new Icon(openFileDialog.FileName, new Size(48, 48)).Handle); 
4

Spróbuj to:

pictureBox1.Image = Bitmap.FromHicon(new Icon(openFileDialog.FileName, new Size(48, 48)).Handle); 

nadzieję, że ta pomoc.

+0

To co znalazłem. Dzięki i tak. –

2

Niektóre ikony mają niepoprawne wymiary 48 x 48 do 32 x 32.

Moja ostatnia kod jest:

Bitmap _image; 
    try 
    { 
    _image = new Icon(icon, width, height).ToBitmap(); 
    } 
    catch(ArgumentOutOfRangeException) 
    { 
    _image = Bitmap.FromHicon(new Icon(icon, new Size(width, height)).Handle); 
    } 
Powiązane problemy