سؤال

بصفتي قادمًا جديدًا نسبيًا لـ MFC ، أرى سياقات الجهاز (DCS) كثيرًا. أنا أفهم بشكل غامض أن الأمر يتعلق بالرسم ، لكن التفاصيل لم يتم شرحها جيدًا في أي مكان يمكنني العثور عليه. ماذا يعني إنشاء "سياق الجهاز المتوافق" ، ولماذا هو مهم؟ ماذا يفعل SelectObject ، وكيف يجب أن أجعل DC متوافقًا أولاً؟

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

المحلول

سياق الجهاز هو مجرد مكان يحدث فيه الرسم ، لذلك إذا كان لديك اثنين من DC ، فأنت ترسم في مكانين مختلفين. نوع من مثل مقبض الملف.

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

السياقات المتوافقة هي تلك التي لديها نفس تنظيم البكسل الأساسي ، والتي تعني عدد البتات لكل بكسل ، والبايت لكل بكسل ، وتنظيم الألوان وما إلى ذلك. يمكن أن تحتوي سياقات جهاز Memory Bitmap على أي مؤسسة تريدها ، لكن سياقات الشاشة الخاصة بك ستكون ذات صلة (في النهاية) بالمخازن المؤقتة على بطاقة الرسومات الخاصة بك ، والتي سيكون لها (اعتمادًا على الوضع ، إلخ) مؤسسة بكسل محددة للغاية.

وجود سياقات متوافقة يعني فعالها في نقل بيانات الصورة بينها ، لأن ترجمة البيانات ضئيلة أو معدومة مطلوبة. على الطرف الآخر ، إذا كان لديك لوحة ألوان 256 ، خريطة 8 بتات وحاولت أن تبرزها على شاشة تحتوي على 8 بتات من كل من RGBA لكل بكسل ، فسيتطلب كل بكسل آخر تدليكًا كبيرًا حيث يتم نسخه ونسخه غير متوافق نقرة الصورة النقطية أبطأ بكثير. وفقًا لوثائق Win32 SDK ، على الأقل bitblt () و stretchblt () "قم بتحويل تنسيق اللون المصدر لمطابقة تنسيق الوجهة" ، بحيث يمكن القيام به.

التحقيق في CreateCompatibledc () و CreateCibleBitMap () كنقاط انطلاق لكيفية إنشاء سياقات الرسم المتوافقة مع السياقات الموجودة بالفعل.

تحكم SelectObject () الموارد التي تنشط حاليًا في سياق الجهاز. يحتوي السياق على قلم حالي وفرشاة وخط ونقطة نقطية. هذه تجعل الكثير من مكالمات GDI أخرى أكثر بساطة من خلال السماح لك بتحديد عدد أقل من المعلمات. على سبيل المثال ، لا يتعين عليك تحديد الخط عند استخدام textout () ، ولكن إذا كنت تريد تغيير الخط ، فهناك موقع SelectObject (). إذا قمت بتغذية SelectObject () مقبض إلى خط ، والعودة القيمة هي مقبض للخط الذي كان ساريًا ، وتستخدم العمليات اللاحقة الخط الجديد. السلوك هو نفسه بالنسبة للأنواع الأخرى من الموارد والأقلام والفرش ، إلخ.

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