القضايا مع استخدام غير معتمد Win32 GDI الأقلام وسائط ؟

StackOverflow https://stackoverflow.com/questions/251693

  •  05-07-2019
  •  | 
  •  

سؤال

MSDN الوثائق هو (إلى حد ما) واضحة حول التاليين الحقائق حول GDI الأقلام:

  1. قلم مستحضرات التجميل (إنشاء طريق CreatePen أو ExtCreatePen w/ PS_COSMETIC) يجب أن يكون 1 وحدة واسعة (حسنا ، <= 1, ولكن دعنا لا نذهب إلى هناك).

  2. هندسية (ExtCreatePen w/ PS_GEOMETRIC) القلم يجب الصلبة (PS_SOLID فقط لا PS_DASH ، إلخ).غير أنها يمكن أن رسم بدانة خطوط. هذا هو موثقة بوضوح في الرابط وضعت أعلاه فقط 9x تقييد (أنا غبي).إلى الدفاع عن بلدي (سيئة) التعليقات (كسر) المنطق في قانون بلدي جعلتني أعتقد خلاف ذلك.بعض بحثت المواد يجب أن يكون قد كتب concidering فقط ويندوز 9x.

لماذا أستطيع voilate هذه القواعد و GDI بسعادة التعادل مع هذه الأقلام ؟

أنا يمكن أن تخلق الدهون (العرض = 10 ، على سبيل المثال) مستحضرات التجميل الأقلام و متقطع هندسية الأقلام.هيك أنا يمكن أن تخلق الدهون ، وانطلق هندسية القلم!

هذه الأقلام يبدو للعمل بشكل جيد عادة.المشكلة الوحيدة التي رأيت في شكل متعدد الخطوط عندما تمرير صفائف كبيرة من النقاط - يجعل خطوط ببطء شديد.ومع ذلك, متعدد الخطوط يتصرف بغرابة مع صفائف كبيرة في العامة - أنه justs يتصرف بشكل مختلف مع سيئة الأقلام.(بلدي غيرها من متعدد الخطوط مشاكل قد يكون سؤال آخر...)

هل من الآمن استخدام واسعة من مستحضرات التجميل الأقلام أو واسعة هندسية مع الأنماط ؟

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

المحلول

بشكل عام يجب أن تلتزم موثقة API, وإلا هل خطر الاعتماد على إصدار نظام التشغيل سلوك معين.

على ExtCreatePen القيود تصفون (هـ.ز لا PS_DASH مع PS_GEOMETRIC) تنطبق فقط على Win9x, لا WinNT لذا على NT/2000/XP الخاص بك "الدهون, متقطع هندسية القلم" لا ينبغي أن يكون مشكلة.نلاحظ أيضا أن Polyline لديه بعض القيود على Win9x.

إذا كنت تريد خطوط متقطعة, كنت اقترح استخدام PS_USERSTYLE بحيث يمكنك التحكم في أطوال شرطات و الثغرات بدلا من الاعتماد على ما الافتراضي PS_DASH يعطيك.

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