我想保存的截圖與該行:截圖保存錯誤在視覺basic.net
PictureBox1.Image.Save("D:\screenshot" & DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
但它說:NullReferenceException異常是未處理..
我想保存的截圖與該行:截圖保存錯誤在視覺basic.net
PictureBox1.Image.Save("D:\screenshot" & DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
但它說:NullReferenceException異常是未處理..
嘗試:
PictureBox1.Image.Save("D:\screenshot\" & DateTime.Now.ToString(_
"yyyy-MM-dd_HH-mm-ss") & ".jpg", _
System.Drawing.Imaging.ImageFormat.Jpeg)
也就是說,在「截圖」之後嘗試使用「\」。
這不應該是異常的來源;當需要權限時拋出'ExternalException',並且寫入同名的文件會覆蓋該文件。 – Timiz0r 2012-01-06 03:22:21
如果沒有「截圖」後面的「\」,語句正試圖將文件添加到「D:」的根目錄。可以允許將文件夾添加到根目錄,但不允許添加管理權限的文件添加。我不知道這是如何實現的,但它可以解釋這個例外。 – 2012-01-06 10:51:22
那麼,正如所提到的那樣,當應用程序無法寫入文件或目錄時,會拋出一個'ExternalException'(因爲這全部是用GDI完成的)。此外,只有系統驅動器的根目錄需要在Vista和更高版本上升級(默認情況下)。嘗試訪問爲空的引用('PictureBox1.Image')的成員('Image.Save')時,通常會拋出'NullReferenceExceptions'。 – Timiz0r 2012-01-06 14:10:44
您是否在PictureBox1
中設置了圖像?我認爲你不是將圖片框Image
屬性設置爲圖像,而是僅僅在盒子上繪製圖像,這不是一回事。如果您還沒有將Image對象加載到PictureBox中,那麼沒有Image對象調用Save。
嘗試看看下面這個例子:
Private Function DrawText(ByVal Text As String) As Bitmap
Dim TextBitmap As New Bitmap(100, 100)
Dim Brush As New SolidBrush(Color.Blue)
Dim SelectedFont = New Font(FontFamily.GenericSerif, 40)
Using Graphic = Graphics.FromImage(TextBitmap)
Graphic.DrawString(Text, SelectedFont, Brush, 0, 0)
End Using
Return TextBitmap
End Function
用法:
PictureBox1.Image = DrawText("Hi") ' Setting an Image to PictureBox1.Image
PictureBox1.Image.Save("D:\HiPic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
上面的例子可能會或可能無法正常工作,因爲這是UNTESTED
。但我的觀點是,除非您將圖像設置爲PictureBox
,否則SAVE
方法將不起作用。 Image
財產。
聽起來像PictureBox1中沒有圖像。 – LarsTech 2012-01-06 01:56:54