And a solution seems to be....
- From: Tony (Goody Goody Liquor,Dallas) <TonyGoodyGoodyLiquorDallas@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 16 May 2008 08:33:00 -0700
Public Sub MyBitBlt(ByVal Dst As PictureBox, ByVal Back As Bitmap, ByVal Src
As Bitmap, ByVal Mask As Bitmap, ByVal X As Long, ByRef Y As Long)
Try
Dim dstHDC As IntPtr = Dst.CreateGraphics.GetHdc
Dim gdiHandleBack As IntPtr = CreateCompatibleDC(dstHDC.ToInt32)
Dim bmHandleBack As IntPtr = Back.GetHbitmap()
SelectObject(gdiHandleBack, bmHandleBack)
Dim backMem As Graphics = Graphics.FromHdc(gdiHandleBack)
Dim backHDC As IntPtr = backMem.GetHdc
Dim gdiHandleMask As IntPtr = CreateCompatibleDC(dstHDC.ToInt32)
Dim bmHandleMask As IntPtr = Mask.GetHbitmap()
SelectObject(gdiHandleMask, bmHandleMask)
Dim maskMem As Graphics = Graphics.FromHdc(gdiHandleMask)
Dim maskHDC As IntPtr = maskMem.GetHdc
BitBlt(backHDC, X, Y, 50, 50, maskHDC, 0, 0,
TernaryRasterOperations.SRCPAINT)
Dim gdiHandleSrc As IntPtr = CreateCompatibleDC(dstHDC.ToInt32)
Dim bmHandleSrc As IntPtr = Src.GetHbitmap()
SelectObject(gdiHandleSrc, bmHandleSrc)
Dim srcMem As Graphics = Graphics.FromHdc(gdiHandleSrc)
Dim srcHDC As IntPtr = srcMem.GetHdc
BitBlt(backHDC, X, Y, 50, 50, srcHDC, 0, 0,
TernaryRasterOperations.SRCAND)
BitBlt(dstHDC, 0, 0, Back.Width, Back.Height, backHDC, 0, 0,
TernaryRasterOperations.SRCCOPY)
srcMem.ReleaseHdc(srcHDC)
maskMem.ReleaseHdc(maskHDC)
backMem.ReleaseHdc(backHDC)
srcMem.Dispose()
maskMem.Dispose()
backMem.Dispose()
Catch ex As Exception
Dim err As String = ex.Message
End Try
End Sub
....didn't take the time to check for memory leaks.
There may be other more efficient solutions.
.
- References:
- (.NET/GDI/BitBlt) Bitmaps will not display correctly.
- From: Tony (Goody Goody Liquor,Dallas)
- (.NET/GDI/BitBlt) Bitmaps will not display correctly.
- Prev by Date: RE: Q: Why is my BitBlt destination always blank?
- Next by Date: CreateDC function
- Previous by thread: (.NET/GDI/BitBlt) Bitmaps will not display correctly.
- Next by thread: RE: Q: Why is my BitBlt destination always blank?
- Index(es):
Relevant Pages
|