MoyStick,一个操纵杆控件






2.82/5 (4投票s)
2005年6月3日
1分钟阅读

36598

1728
一个八方向操纵杆控件。
引言
这个控件模拟了一个八方向操纵杆。与传统的操纵杆不同,该控件还根据“杆”的末端与控件中心的距离提供一个幅度测量值。
使用代码
您可能需要了解的属性
BackColor
设置控件圆形区域的颜色。CircleDiameter
设置控件的直径(以像素为单位)。LineColor
设置控件“杆”的颜色。LineShapeEnd
设置“杆”末端的形状。LineWidth
设置“杆”的宽度(以像素为单位)。
在您的应用程序中使用鼠标操纵杆需要使用 MouseStickMoved
事件。eventargs
提供两个属性,Magnitude
和 Direction
。
Magnitude
将返回一个介于 0 和 15 之间的整数值,具体取决于“杆”的末端与控件中心的距离。Direction
返回一个类型为cPoint
的枚举,定义如下public enum cPoint { north, northEast, east, southEast, south, southWest, west, northWest }
例如,在我的演示程序中,我在窗体的 userControl11_MouseStickMoved
事件处理程序中设置了圆的加速度和方向
private void userControl11_MouseStickMoved(object sender,
MoyStick.MouseStickEventArgs e)
{
stbMouseStick.Text = "direction: " + e.Direction.ToString() +
" magnitude: " + e.Magnitude.ToString();
switch(e.Direction)
{
case MoyStick.cPoint.north:
dY = e.Magnitude * (-1);
dX = 0;
break;
case MoyStick.cPoint.northEast:
dY = e.Magnitude * (-1);
dX = e.Magnitude;
break;
//(And so on......)
关注点
我使用了一个计时器来使控件失效,以消除我在尝试每次发生 MouseMove
事件时观察到的剧烈闪烁。