mostafaaa
شنبه 23 شهریور 1387, 21:23 عصر
با سلام خدمت دوستان خوبم
من همیشه برای تهیه ScreenShot از دسکتاپ یا فرمهام از متد CopyFromScreen استفاده میکردم و هیچ مشکلی هم باهاش نداشتم.
ولی اینبار یه فرم دارم که Transparent شده و تو RunTime فقط یه Shape که در واقع یه عکس هستش و یه سری کنترل دیده میشه. زمانی که با متد CopyFromScreen از دسکتاپم ScreenShot میگیرم هیچی از فرم توی عکس نمیفته. البته با API میتونم مشکلم رو حل کنم ولی میخوام با استفاده از همین متد دات نت کارم راه بیفته.
اینم کدش
Dim HBitmap As Bitmap
Private Function CreateScreenShot() As System.Drawing.Bitmap
Dim g As Graphics = Me.CreateGraphics()
Try
Dim sz As Size = SystemInformation.PrimaryMonitorSize
HBitmap = New Bitmap(sz.Width, sz.Height, g)
Dim hGraphics As Graphics = Graphics.FromImage(HBitmap)
hGraphics.CopyFromScreen(0, 0, 0, 0, sz)
Return HBitmap
Catch
If (Not g Is Nothing) Then g.Dispose()
Finally
If (Not g Is Nothing) Then g.Dispose()
End Try
Return Nothing
End Function
من همیشه برای تهیه ScreenShot از دسکتاپ یا فرمهام از متد CopyFromScreen استفاده میکردم و هیچ مشکلی هم باهاش نداشتم.
ولی اینبار یه فرم دارم که Transparent شده و تو RunTime فقط یه Shape که در واقع یه عکس هستش و یه سری کنترل دیده میشه. زمانی که با متد CopyFromScreen از دسکتاپم ScreenShot میگیرم هیچی از فرم توی عکس نمیفته. البته با API میتونم مشکلم رو حل کنم ولی میخوام با استفاده از همین متد دات نت کارم راه بیفته.
اینم کدش
Dim HBitmap As Bitmap
Private Function CreateScreenShot() As System.Drawing.Bitmap
Dim g As Graphics = Me.CreateGraphics()
Try
Dim sz As Size = SystemInformation.PrimaryMonitorSize
HBitmap = New Bitmap(sz.Width, sz.Height, g)
Dim hGraphics As Graphics = Graphics.FromImage(HBitmap)
hGraphics.CopyFromScreen(0, 0, 0, 0, sz)
Return HBitmap
Catch
If (Not g Is Nothing) Then g.Dispose()
Finally
If (Not g Is Nothing) Then g.Dispose()
End Try
Return Nothing
End Function