我想用鼠标将一个对象在 X 和 Y 中对齐,以将其移动到位。我可以通过使用各种旋转控件(或按钮)来滚动解决方案,但它很混乱,我想知道是否有一个控件(如操纵杆)使用鼠标提供 2 轴控制并以不同的速率触发事件它的位置?
问问题
3304 次
5 回答
3
Afaik Jedi(jedi apilib?)也有一个操纵杆头。是winapi,不是COM,所以不涉及TLB
于 2010-01-06T12:56:55.997 回答
3
试试NLDJoystick,这是我编写的一个基于纯 WinAPI (MMSystem.pas) 的开源组件。它可以从GitHub下载。
界面:
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property AbsCenter;
property AbsMax;
property AbsMin;
property Active default False;
property Advanced default False;
property AxisCount;
property Axises;
property ButtonCount;
property HasPOV;
property ID;
property OnButtonDown;
property OnButtonUp;
property OnMove;
property OnPOVChanged;
property PollingInterval default 40;
property RepeatButtonDelay default 350;
property RepeatMoveDelay default 350;
property SuspendScreensaver default False;
property ThresholdFactor;
于 2011-10-25T14:29:52.637 回答
1
也许您可以自己制作类似的东西。
- 拿一个面板,并注册鼠标上、下和移动事件
- 在 MouseDown 上,设置一个布尔值 (fButtonDown),以便您知道鼠标按钮被按下并保存鼠标指针的 X 和 Y 坐标。
- 在 MouseMove 上,检查按钮是否按下 (fButtonDown) 并移动您的对象。您的鼠标光标从其保存的位置移动得越多,您移动的速度就越快。
- 在 MouseUp 上,将 fButtonDown 设置为 false
以上是非常原始的,但应该工作。
于 2010-01-06T15:18:26.070 回答
0
我在谷歌上搜索“操纵杆 dll”,发现无数。您可能可以将其中一个放入您的项目中,然后通过简单地为它编写一个 TLIB 标头(或任何它被称为的,有一段时间没有这样做)从 Delphi 访问它的 C API。
于 2010-01-06T09:58:29.527 回答
0
你可以使用一个 DelphiX 组件。据我所知,它们是 DirectX 的包装器,其中一个包装了 DirectX 操纵杆界面。它以 Delphi 风格包装,因此易于使用。
于 2010-01-06T10:25:02.637 回答