2012-01-06 5 views
0

나는이 라인 스크린 샷을 저장하기 위해 노력하고있어에서 오류를 절약 .. NullReferenceException이 처리되지 않은했다스크린 샷 시각 basic.net

+0

PictureBox1에 이미지가없는 것 같습니다. – LarsTech

답변

1

시도 :

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

즉, "스크린 샷"다음에 "\"를 입력하십시오.

+0

예외 소스가 아니어야합니다. permission이 필요할 때'ExternalException'이 던져지고, 같은 이름의 파일에 쓰면 그 파일을 덮어 씁니다. – Timiz0r

+0

"스크린 샷"다음에 "\"가 없으면 "D :"의 루트 디렉토리에 파일을 추가하려고합니다. 루트 디렉터리에 폴더를 추가 할 수 있지만 관리 권한이없는 경우에는 파일을 추가 할 수 없습니다. 어떻게 달성되는지 모르지만 예외를 설명 할 것입니다. –

+0

글쎄, 언급 한 바와 같이,'ExternalException' (이것은 GDI에서 모두 완료 되었기 때문에)은 어플리케이션이 파일이나 디렉토리에 쓸 수있는 액세스 권한이 없을 때 발생합니다. 또한 Vista에서는 시스템 드라이브의 루트 디렉토리 만 고도가 필요합니다 (기본값). 'NullReferenceExceptions'는 일반적으로 null 인 참조 ('PictureBox1.Image')의 멤버 ('Image.Save')에 접근하려고 할 때 발생합니다. – Timiz0r

1

PictureBox1에 이미지를 설정 했습니까? 난 그림 상자 Image 속성을 이미지로 설정하지 않고 대신에 상자에 이미지를 그리는 것인데, 이는 똑같지 않습니다. Image 객체를 PictureBox에로드하지 않은 경우 Save on을 호출 할 Image 객체가 없습니다.

이 예를 살펴보십시오 :

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 

사용법 :이 UNTESTED 때문에

PictureBox1.Image = DrawText("Hi") ' Setting an Image to PictureBox1.Image 
PictureBox1.Image.Save("D:\HiPic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 

위의 예제 또는 작동하지 않을 수 있습니다. 하지만 내 요점은, PictureBox 이미지를 설정하지 않으면 SAVE 메서드가 작동하지 않는다는 것입니다. Image 속성.