سؤال

أحاول كتابة سليل Tgraphiccontrol مخصص سيسمح للمستخدم بتضمينه SDL. التقديم السطح على شكل VCL. سيوفر ذلك طريقة بسيطة لعرض الرسوم المتحركة SDL في نموذج.

يبدو أن tgraphiccontrol هو إعادة رسم مع طريقة الطلاء. كم مرة يسمى هذا؟ هل هو فقط عندما يحدث شيء إبطال عنصر التحكم، أو هل هناك أشياء أخرى تتصل بها؟ كيف يتفاعل ذلك مع شيء يفعل الرسم الخاص به؟

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

المحلول

السؤال رقم 1: كم مرة يسمى هذا؟

انظر الإجابة Mghie: كلما كان التحكم في النافذة الأصل يعالج رسالة WM_PAINT

السؤال 2: هل هو فقط عندما يحدث شيء إبطال عنصر التحكم، أو هل هناك أشياء أخرى تتصل بها؟

انظر الإجابة Mghie: فقط عندما يتم إبطالها

السؤال 3: كيف يتفاعل ذلك مع شيء يفعل الرسم الخاص به؟

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

نصائح أخرى

يتم استدعاء طريقة الطلاء للتحكم غير النوافذ (أي TGRAPHICCOCCONTROL) عند التحكم في النافذة أسفل إعادة رسم نفسه. يحدث هذا عند معالجة رسالة WM_PAINT للتحكم النوافذ.

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

ستحسب إبطال tgraphicControl الجزء المقابل من عنصر تحكم الأصل النوافذ، وإبطال هذا الجزء.

إذا كنت بحاجة إلى TGRAPHICCOCCONTROL لإعادة رسم نفسه، فأنت بحاجة إلى الاتصال بالإبادة عليه أو التحكم في الوالدين. لا توجد طريقة أخرى للتسبب في إعادة رسم.

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