2012-01-06 79 views
0

我想保存的截圖與該行:截圖保存錯誤在視覺basic.net

PictureBox1.Image.Save("D:\screenshot" & DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 

但它說:NullReferenceException異常是未處理..

+0

聽起來像PictureBox1中沒有圖像。 – LarsTech 2012-01-06 01:56:54

回答

1

嘗試:

PictureBox1.Image.Save("D:\screenshot\" & DateTime.Now.ToString(_ 
       "yyyy-MM-dd_HH-mm-ss") & ".jpg", _ 
       System.Drawing.Imaging.ImageFormat.Jpeg) 

也就是說,在「截圖」之後嘗試使用「\」。

+0

這不應該是異常的來源;當需要權限時拋出'ExternalException',並且寫入同名的文件會覆蓋該文件。 – Timiz0r 2012-01-06 03:22:21

+0

如果沒有「截圖」後面的「\」,語句正試圖將文件添加到「D:」的根目錄。可以允許將文件夾添加到根目錄,但不允許添加管理權限的文件添加。我不知道這是如何實現的,但它可以解釋這個例外。 – 2012-01-06 10:51:22

+0

那麼,正如所提到的那樣,當應用程序無法寫入文件或目錄時,會拋出一個'ExternalException'(因爲這全部是用GDI完成的)。此外,只有系統驅動器的根目錄需要在Vista和更高版本上升級(默認情況下)。嘗試訪問爲空的引用('PictureBox1.Image')的成員('Image.Save')時,通常會拋出'NullReferenceExceptions'。 – Timiz0r 2012-01-06 14:10:44

1

您是否在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財產。