1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Private Function Capturectrl(ByVal ctrl As Control) As Bitmap
Dim memoryImage As Bitmap
Dim mygraphics As Graphics = ctrl.CreateGraphics()
Dim s As Size = ctrl.Size
'ici le width corrige
memoryImage = New Bitmap(s.Width - (SystemInformation.FrameBorderSize.Width + 3), s.Height - (SystemInformation.FrameBorderSize.Width + 3 + SystemInformation.CaptionHeight), mygraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
Dim dcSrc As IntPtr = mygraphics.GetHdc
Dim dcDest As IntPtr = memoryGraphics.GetHdc
StretchBlt(dcDest, 0, 0, ctrl.ClientSize.Width, ctrl.ClientSize.Height,
dcSrc, 0, 0, memoryImage.Width, memoryImage.Height,
TernaryRasterOperations.SRCCOPY)
mygraphics.ReleaseHdc(dcSrc)
memoryGraphics.ReleaseHdc(dcDest)
Return memoryImage
End Function
<DllImport("gdi32.dll")> _
Private Shared Function StretchBlt(ByVal hdcDest As IntPtr, ByVal nXOriginDest As Integer, ByVal nYOriginDest As Integer, ByVal nWidthDest As Integer, ByVal nHeightDest As Integer, ByVal hdcSrc As IntPtr, ByVal nXOriginSrc As Integer, ByVal nYOriginSrc As Integer, ByVal nWidthSrc As Integer, ByVal nHeightSrc As Integer, ByVal dwRop As TernaryRasterOperations) As Boolean
End Function
Public Enum TernaryRasterOperations
SRCCOPY = &HCC0020 ' dest = source*/
SRCPAINT = &HEE0086 ' dest = source OR dest*/
SRCAND = &H8800C6 ' dest = source AND dest*/
SRCINVERT = &H660046 ' dest = source XOR dest*/
SRCERASE = &H440328 ' dest = source AND (NOT dest )*/
NOTSRCCOPY = &H330008 ' dest = (NOT source)*/
NOTSRCERASE = &H1100A6 ' dest = (NOT src) AND (NOT dest) */
MERGECOPY = &HC000CA ' dest = (source AND pattern)*/
MERGEPAINT = &HBB0226 ' dest = (NOT source) OR dest*/
PATCOPY = &HF00021 ' dest = pattern*/
PATPAINT = &HFB0A09 ' dest = DPSnoo*/
PATINVERT = &H5A0049 ' dest = pattern XOR dest*/
DSTINVERT = &H550009 ' dest = (NOT dest)*/
BLACKNESS = &H42 ' dest = BLACK*/
WHITENESS = &HFF0062 ' dest = WHITE*/
End Enum |
Partager