Just for the heck of it I'm building a graphic editor, mainly to see how far I can take it and how much I can learn as I go. I'm having a problem with Image.Save.
First I have an MDI parent form from which graphic files can be opened. After selecting the file in an OPenDialog (ODialog) I create an instance of a form and load the picture into the Picturebox the form contains:
frmPic = New frmPicture
frmPic.Text = ODialog.SafeFileName
frmPic.SavedFullName = ODialog.FileName
frmPic.MdiParent = Me
frmPic.PictureBox1.Load(ODialog.FileName)
frmPic.Show()
Later on when I need to use a color blotter type function I am converting the picturebox image into a stream and saving it to a bitmap so that I can use the GetPixel function to pull the color under the mouse. The strange thing is it only seems to work for PNG files. Every other type of file is giving me the "A first chance exception of type 'System.Runtime.InteropServices.ExternalException' occurred in System.Drawing.dll
A generic error occurred in GDI+." error message, which the documentation says means, "The image was saved with the wrong image format."
The code looks like this:
Select Case Me.Text.Substring(Text.LastIndexOf(".") + 1).ToLower
Case "bmp"
TheFmt = ImageFormat.Bmp
Case "gif"
TheFmt = ImageFormat.Gif
Case "jpg"
TheFmt = ImageFormat.Jpeg
Case "png"
TheFmt = ImageFormat.Png
Case "wmf"
TheFmt = ImageFormat.Wmf
End Select
Try
PictureBox1.Image.Save(TheStream, TheFmt)
ThePicture = Bitmap.FromStream(TheStream)
Catch ex As Exception
Debug.Print(ex.Message)
End Try
The Select Case does generate the correct ImageFormat. The error is generated on the PictureBox1.Image.Save(TheStream, TheFmt)
line, but like I said, works as advertised if I use a PNG file.
I guess I am looking for anyone who might have a clue as to the problem or knows another (better!, faster!) way of getting the color of a pixel out of a picturebox.