我很难模仿“眼球”效果。我有一个OvalShape
(如 PowerPack 形状)并且可以将运动限制在特定的 x,y 上。但是,我需要一个新的眼睛来帮助我,我想我已经看太久了,无法理解它。
目标:
通过跟随光标位置来模拟眼球运动体验。
规格:
光标位置是PointToClient
类型,因此,它是相对于形式的。对象/形状是相对于 aShapeContainer
所以 MousePosition 10,10 将转换为 EyePupil 位置 10,10 因为该位置基于它的父级
这是一个概要:
Class
Dim MousePosition As Drawing.Point
.....Handles MyBase.Load
Dim ctrl As System.Windows.Forms.Control
For Each ctrl In Me.Controls
AddHandler ctrl.MouseMove, AddressOf OnMouseMoveHandler
Next
Dim canvas As New ShapeContainer
canvas.Parent = Me.EyeIcon
Me.EyePupilShape.Parent = canvas
处理事件:
....OnMouseMoveHandler(..)
MousePosition = Me.PointToClient(Cursor.Position)
Debug.Print("Mouse position : X = " & MousePosition.X & ", " & MousePosition.Y)
Me.EyePupilShape.Location = New Drawing.Point(Clamp(MousePosition.X, 32, 50), Clamp(MousePosition.Y, 31, 50))
其中 Clamp 只是MathHelper.clamp的自定义版本,最小/最大值是眼睛的“瞳孔”应限制在其父元素内的位置
这是因为它将瞳孔限制在特定的 x,y 范围内
但是,它不会“跟随”光标本身。例如,如果光标在左下角,它不会识别,它只是基于 x,y 值,这就是我需要帮助来解决我目前所拥有的。对于它的价值,我从 MSDN 获得了我的大部分信息