سؤال

ما أريده هو إنشاء برنامج رسم متجه بطبقات ، ولكن لتجنب استخدام الشفافية / العتامة ، أريد أن أرسم كل شكل من أدنى طبقة إلى أعلى طبقة على صورة نقطية واحدة. من أجل التعبئة ، أريد إغراق الشكل. مشكلتي هي أنه إذا كان لدي شكل يتم رسمه ثم تم إغفاله ، فإن الشكل التالي يتداخل قليلاً وأن حدود الشكل الجديد هي نفسها التي يملأها الفيضان الآخر جزئيًا. هل هناك طريقة تعطى إحداثيات الشكل التي يمكنني العثور عليها الحدود الفعلية لفيلم الفيضان بدلاً من استخدام لون مستهدف؟ شكرًا

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

المحلول

لن تعمل Floodfill من أجل ما تريد ... ما لم تصنع واحدة مما يلي:

الخيار 1: استخدم Floodfill في جزء آخر من الذاكرة ، ثم قم ببرز الشكل باستخدام قناع إلى المكان الذي تريده ، لأنك قلت أنك تريد تجنب الشفافية ، هذا الخيار قد تم تجاوزه ... (altough i ما زلت أوصي به ، في الحقيقة ، ليس من الصعب إجراء ما إذا كان ذلك يتحقق إذا كان هذا البكسل يجب نسخه أو لا يتم نسخه)

الخيار 2: استخدم الأشكال الأساسية فقط ، التي يمكنك ملؤها بسهولة دون استخدام Floodfill ، وملءها بخطوط أفقية مع وجود نقطة انطلاق ونقطة النهاية بين بكسلتين نهاية كل سطر من الشكل. سيكون ذلك للمربعات والدوائر ...

الخيار 3: نفس الخيار 2 ، ولكن السماح بمثلثات تعسفية.

الخيار 4: مثل 3 ، ولكن السماح لك بقراءة قائمة من النقاط ، وتكوين الكائن بالعديد من المستطيلات ، حتى تتمكن من صنع أي شكل تعسفي (حتى تلك المحدبة). هذا سيكون من الصعب حقًا تنفيذها بشكل صحيح (أشكال محدبة خاصة).

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