سؤال

أود تحديد ما إذا كان المستقيم داخل النافذة مرئيًا تمامًا.

لقد وجدت مستقيمًا ، لكن هذه الوظيفة تحدد ما إذا كان أي جزء من المستقيم مرئيًا ، أريد أن أعرف ما إذا كان المستقيم بأكمله مرئيًا.

هل هناك أي وظيفة لهذا؟

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

المحلول

احصل أولاً على منطقة قطع النظام (المنطقة المرئية للنافذة) إلى منطقة باستخدام GetRandomRgn. اقرأ المزيد عن "منطقة النظام" هنا. بعد ذلك ، تعويض تلك المنطقة لأنها في إحداثيات الشاشة (المقالة التي ربطتها لها مثال). بعد ذلك ، قم بإنشاء منطقة من مستطيلك مع CreateRectRgn ودمج أجزاء من "منطقة المستطيل" مع تلك التي ليست جزءًا من "منطقة النظام": هذا الاتصال CombineRgn تمرير منطقة المستطيل كمنطقة أول ، ومنطقة النظام كمنطقة ثانية ، و RGN_DIFF كما fnCombineMode. إذا كانت النتيجة NULLREGION بعد ذلك ، يكون المستطيل مرئيًا تمامًا - لا يتم تغطيته بالكامل أو جزئيًا بواسطة أي نافذة (المستوى العلوي أم لا) ، أو أنه ليس خارج الشاشة بالكامل أو جزئيًا.

الكل في الكل ، هناك احتمال أن تقترب من مشكلتك بالطريقة الخاطئة. إذا كنت قد أخبرت ما كنت تحاول تحقيقه ، فربما اقترح اقتراح طريقة أبسط.

نصائح أخرى

يستخدم ptvisible في كل ركن من أركان المستطيل.

تحدد وظيفة PTVisible ما إذا كانت النقطة المحددة داخل منطقة القطع لسياق الجهاز.

هل يمكنك إجراء مقارنة بسيطة باستخدام إحداثيات النافذة والمستطيل.

تحقق من الإدارة اليسرى للمستطيل على يمين الحدود اليسرى للنافذة ؛ الإحداثة اليمنى على يسار الحدود اليمنى للنافذة ؛ وتشبه أعلى وأسفل؟

قد يكون التجاعيد الوحيد إذا كنت تستخدم الإحداثيات المنطقية والفيزيائية ، وفي هذه الحالة ستحتاج إلى إجراء تحول.

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