|
发表于 2007-9-26 15:43:00
|
显示全部楼层
Re: 在做一个45度角地图编辑器,需要用程序生成屏蔽(MASK)
该函数是从我的一个类模块中复制出来的,有些地方要修改一下。以下是改后的代码:
Dim hBitmap As Long
Public Function CreateMaskFromDC(ByVal hDC As Long, ByVal width As Long, ByVal height As Long, ByVal MaskColor As Long) As Long
Dim ForeDc, ForeBitmap As Long
Dim MaskDC, Maskbitmap As Long
Dim ff As Long
ForeDc = CreateDCandBmpBySize(width, height)
BitBlt ForeDc, 0, 0, width, height, hDC, 0, 0, vbSrcCopy
ForeBitmap = hBitmap
MaskDC = CreateCompatibleDC(0)
Maskbitmap = CreateCompatibleBitmap(MaskDC, width, height)
SelectObject MaskDC, Maskbitmap
ff = SetBkColor(ForeDc, MaskColor)
BitBlt MaskDC, 0, 0, width, height, ForeDc, 0, 0, vbSrcCopy
CreateMaskFromDC = MaskDC
DeleteDC ForeDc: DeleteObject ForeBitmap
End Function
Public Function CreateDCandBmpBySize(ByVal width As Long, ByVal height As Long) As Long
DC = CreateCompatibleDC(0)
hBitmap = CreateCompatibleBitmap(Screen.ActiveForm.hDC, width, height)
SelectObject DC, hBitmap
CreateDCandBmpBySize = DC
End Function
Private Sub Command1_Click()
Dim r As Long
r = CreateMaskFromDC(Picture1.hDC, Picture1.width, Picture1.height, vbBlue)
BitBlt Picture2.hDC, 0, 0, Picture1.width, Picture1.height, _
r, 0, 0, vbSrcCopy
End Sub
|
|