سؤال

أود محاذاة كائن في X و Y بالعين باستخدام الماوس لنقله إلى موضعه. يمكنني لفة حل عن طريق استخدام مختلف عناصر التحكم في الدوران (أو الأزرار) ولكنها فوضوي، وعليك أن أتساءل عما إذا كان هناك تحكم - مثل عصا التحكم - يوفر تحكم 2 محور باستخدام الفأرة وحرائق الأحداث بأسعار تختلف موقفه؟

هل كانت مفيدة؟

المحلول

Afaik Jedi (Jedi Apilib؟) كان رأس عصا التحكم أيضا. إنه Winapi، وليس كوم، لذلك لا يوجد TLB

نصائح أخرى

يحاول nldjoystick., ، مكون مفتوح المصدر مكتوب بي وبناء على Winapi النقي (MMSYSTEM.PAS). إنه قابل للتحميل من خادم SVN هنا.

الواجهة:

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;

ربما يمكنك أن تجعل شيء من هذا القبيل بنفسك.

  1. خذ لوحة، وتسجيلها على الماوس لأعلى وأسفل ونقل الأحداث
  2. على Mousedown، قم بتعيين Boolean (FButtondown) حتى تعرف أن MouseButton يتم الضغط عليه وحفظ إحداثيات X و Y في MousePointer.
  3. على mousemove، تحقق مما إذا كان الزر أسفل (FButtondown) ونقل كائنك. كلما تم نقل المزيد من المخرج من موقعه المحفوظ، فإن أسرع تتحرك.
  4. على الماوس، قم بتعيين FButtondown إلى False

ما سبق هو بدائي للغاية، ولكن يجب أن تعمل.

أنا غوغض ل "عصا التحكم DLL" وعثرت لا تعد ولا تحصى. ربما يمكنك إلقاء أحد هذه في مشروعك ثم الوصول إلى واجهة برمجة تطبيقات C من دلفي ببساطة عن طريق كتابة رأس TLIB (أو ما يسمى، لم تقم بذلك منذ فترة).

يمكنك استخدام مكونات Delphix. إنهم مغلفة من أجل DirectX وواحد منهم يلتف حول واجهة عصا التحكم DirectX بقدر ما أتذكر. يلتف في نمط دلفي بحيث يكون سهل الاستخدام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top