HOME > .NET Framework > Forum > error A generic error occurred in GDI+ ค่ะ มัน error ฟ้องที่บรรทัด Me.PictureBox1.Image.Save(theFile, Imaging.ImageFormat.Jpeg)
error A generic error occurred in GDI+ ค่ะ มัน error ฟ้องที่บรรทัด Me.PictureBox1.Image.Save(theFile, Imaging.ImageFormat.Jpeg)
มัน error ฟ้องที่บรรทัด Me.PictureBox1.Image.Save(theFile, Imaging.ImageFormat.Jpeg) ว่า
A generic error occurred in GDI+
ขอบคุณล่วงหน้าค่ะ
Code (VB.NET)
Imports System.DateTime
Public Class Form2
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
Public Function SaveScreen(ByVal theFile As String) As Boolean
Dim data As IDataObject
data = Clipboard.GetDataObject()
Dim bmap As Bitmap
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Bitmap)
Me.PictureBox1.Image = bmap
Me.PictureBox1.Image.Save(theFile, Imaging.ImageFormat.Jpeg)
End If
End Function
Private Sub Command2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command2.Click
Dim fname1 As String
fname1 = System.DateTime.Now.ToString("HH_mm_ss") 'System.DateTime.Now.ToLongTimeString
Call keybd_event(System.Windows.Forms.Keys.Snapshot, 0, 0, 0)
System.Threading.Thread.Sleep(200) ' To have time to catch the clipboard
SaveScreen("C:\" + fname1 + ".jpeg")
End Sub
End Class
มันไม่สามารถเปลี่ยนเป็น
fname1 = System.DateTime.Now.ToLongTimeString("HH:mm:ss") มันจะ
ฟ้องว่า Conversion from string "HH:mm:ss" to type 'Integer' is not valid.
การ print screen โดยผ่านคลิบบอดไม่ค่อยเวิร์คครับ แถมใช้ api อีกโอกาศเกิดบักสูง ลองใช้วิธีนี้ดู
Code (VB.NET)
Imports System.DateTime
Public Class Form2
Public Function SaveScreen(ByVal theFile As String) As Boolean
Dim bmap As New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
Dim g As Graphics = Graphics.FromImage(bmap)
g.CopyFromScreen(New Point(0, 0), Point.Empty, New Size(bmap.Width, bmap.Height))
Me.PictureBox1.Image = bmap
Me.PictureBox1.Image.Save(theFile)
End Function
Private Sub Command2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command2.Click
Dim fname1 As String
Dim fname2 As String
fname2 = System.DateTime.Now.ToString("HH_mm_ss")
fname1 = System.DateTime.Now.ToLongTimeString() '<--ตรงนี้มันต้องไส่ตัวเลข มะงั้นก็ต้องว่างไว้ครับ
' แต่ก็ save ไม่ได้อยู่ดีเพราะ window ห้ามตั้งชื่อไฟล์มี " : " o_O'
SaveScreen("C:\" + fname2 + ".jpeg")
End Sub
End Class