2012-01-06 2 views

答えて

1

試してみてください。

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

つまり、「スクリーンショット」の後ろに「\」を入れてみてください。

+0

例外の発生元であってはなりません。アクセス権が必要なときに 'ExternalException'がスローされ、同じ名前のファイルに書き込むとそのファイルを上書きします。 – Timiz0r

+0

"スクリーンショット"の後に "\"を付けないと、ステートメントは "D:"のルートディレクトリにファイルを追加しようとしています。ルートディレクトリにフォルダを追加することは許可できますが、管理権限を持たずにファイルを追加することはできません。私はこれがどのように達成されたかはわかりませんが、例外を説明します。 –

+0

上記のように、アプリケーションがファイルまたはディレクトリへの書き込みアクセス権を持たない場合、 'ExternalException'(これはGDIですべて行われるため)がスローされます。また、システムドライブのルートディレクトリだけが、Vista以降では高度(デフォルト)を必要とします。 'NullReferenceExceptions'は一般的に、ヌルである参照(' 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プロパティ。