Option Explicit Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private mlngRg As Long Private Sub Form_Load() Me.ScaleMode = vbPixels Me.AutoRedraw = True Dim X1 As Long, Y1 As Long, X2 As Long, Y2 As Long X1 = 100: X2 = 200 Y1 = 50: Y2 = 150 Ellipse Me.hdc, X1, Y1, X2, Y2 mlngRg = CreateEllipticRgn(X1, Y1, X2, Y2) End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If PtInRegion(mlngRg, X, Y) = 0 Then MsgBox "不在范围内" Else MsgBox "在范围内" End If End Sub
POINT.X POINT.Y 在范围就认为OK
Private Sub Form_DblClick()
if CurrentX >....... and me.CurrentY >......
End Sub
前提是你画圆时要用个全局变量记录每个圆的位置参数等,以便你判断
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private mlngRg As Long
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Me.AutoRedraw = True
Dim X1 As Long, Y1 As Long, X2 As Long, Y2 As Long
X1 = 100: X2 = 200
Y1 = 50: Y2 = 150
Ellipse Me.hdc, X1, Y1, X2, Y2
mlngRg = CreateEllipticRgn(X1, Y1, X2, Y2)
End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If PtInRegion(mlngRg, X, Y) = 0 Then
MsgBox "不在范围内"
Else
MsgBox "在范围内"
End If
End Sub