سؤال

هل هناك طريقة أخرى لتقديم الرسومات في C# بعد ذلك جي دي آي + و XNA?

(لتطوير محرر خريطة البلاط.)

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

المحلول

SDL.NET هو الحل الذي أحببته.إذا كنت بحاجة إلى رسم ثلاثي الأبعاد فوقه، فيمكنك استخدام Tao.OpenGL للعرض بداخله.إنه سريع ومتوافق مع معايير الصناعة (SDL, ، أي) وعبر الأنظمة الأساسية.

نصائح أخرى

نعم، لقد قمت بكتابة عنصر تحكم Windows Forms الذي يغلف DirectX 9.0 ويوفر معالجة مباشرة لمستوى البكسل لسطح الفيديو.

لقد كتبت بالفعل منشورًا آخر على Stack Overflow يسألني عما إذا كانت هناك طرق أخرى أفضل: C# غير آمنة ومؤشرات للعرض ثنائي الأبعاد، جيدة أم سيئة؟

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

وهذا مستوى عالٍ من الخطوات المطلوبة:

  1. قم بتنزيل DirectX SDK.
  2. إنشاء C# جديد نماذج ويندوز المشروع والرجوع إلى مجموعة Microsoft DirectX.
  3. تهيئة كائن جهاز DirectX جديد مع معلمات العرض التقديمي (نافذة ، التخزين المؤقت للخلف ، وما إلى ذلك) التي تحتاجها.
  4. قم بإنشاء الجهاز ، مع الحرص على تسجيل السطح "الملعب" ووضع العرض الحالي (بت لكل بكسل).
  5. عندما تحتاج إلى عرض شيء ما، Lock سطح backbuffer وتخزين المؤشر الذي تم إرجاعه إلى بداية الذاكرة السطحية.
  6. استخدم المؤشر الحسابي ، وحساب موضع البكسل الفعلي في البيانات بناءً على السطح ، وبتات لكل بكسل وإحداثيات X/Y Pixel الفعلية.
  7. بالنسبة للبساطة، فإنني ألتزم بمعدل 32 بت في الثانية، مما يعني أن إعداد البكسل أمر بسيط مثل:*(surfacePointer + (y * pitch + x))=Color.FromARGB(255,0,0);
  8. عند الانتهاء من الرسم Unlock سطح المخزن المؤقت الخلفي.تقديم السطح.
  9. كرر من الخطوة 5 كما هو مطلوب.

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

  • DirectX المُدار (مساحة اسم Microsoft.DirectX) للحصول على رسومات ثلاثية الأبعاد أسرع.إنه عبارة عن غلاف .NET قوي فوق DirectX API، والذي يأتي مع القليل من الأداء الناجح لإنشاء كائنات .NET وتنظيمها.ما لم تكن تكتب محركًا ثلاثي الأبعاد حديثًا كامل الميزات، فسوف يعمل بشكل جيد.

  • Window Presentation Foundation (WPF) (مساحة اسم Windows.Media) - الخيار الأفضل للرسومات ثنائية الأبعاد.لديها أيضًا قدرات ثلاثية الأبعاد محدودة.تهدف إلى استبدال Windows Forms بإطار عمل مستقل عن الدقة المسرع للأجهزة.مريح جدًا، ويدعم العديد من عناصر التحكم المخصصة والموارد وربط البيانات والأحداث والأوامر...لديها أيضًا عدد قليل من WTFs.السرعة عادة ما تكون أسرع من GDI وأبطأ من DirectX، وتعتمد بشكل كبير على كيفية القيام بالأشياء (رؤية شيء ما يعمل بشكل أسرع 60 مرة بعد إعادة كتابته بطريقة معقولة).لقد نجحنا في تنفيذ 3 شاشات بدقة 1280 × 1024 مليئة بالمؤشرات والرسوم البيانية والمؤامرات في الوقت الفعلي على جهاز كمبيوتر واحد (وليس الأفضل).

يمكنك محاولة البحث في WPF، باستخدام Visual Studio و/أو Expression Blend.لست متأكدًا من مدى التعقيد الذي تحاول الحصول عليه، ولكن من المفترض أن يكون قادرًا على التعامل مع محرر بسيط.ألق نظرة على هذا مقالة MSDN لمزيد من المعلومات.

قد تنظر في مكتبة الرسومات بالقاهرة.ال كثرة الوحيدات يحتوي المشروع على روابط لـ C#.

القاهرة هو خيار.أقوم حاليًا بإعادة كتابة برنامج رسم الخرائط الخاص بي باستخدام كل من GDI+ وCairo.أنه يحتوي على مولد خريطة البلاط، من بين ميزات أخرى.

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