الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عملية إعادة الرسم تتم بشكل رديء .. ما الحل ؟؟

بدأه MKSoft في 17 أبريل 2010 · 8 رد · 898 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عند استخدامي للحدث المعروف بـ paint الخاص بـ Panel على سبيل المثال و أقوم برسم كرة تتحرك عليه , يكون هناك مظهر سيء جدا في كل مرة يتم قيها إعادة الرسم باستخدما الدالة Refresh , وذبك من خلال ظهور ومضات بيضاء اللون ناتجة عن مسح الرسم السابق في كل مرة ليتم الرسم الجديد . فهل يوجد طريقة لحل هذا الإشكال ؟؟

#2

بسم الله الرحمن الرحيم

هُنالك طريقة قُمت بإتباعها وهي أن لا تقوم بعملية مسح مرة أُخرى

وإنما تقوم برسم كُرة بلون خلفية الشاشة بنفس الإحداثيات القديمة للكُرة

ورسم الكُرة الجديدة في الموقع المطلوب

أتمنى أن أكون قد أفدت

أخوكم في الله : سامر

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

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#3

طبيعي أن يكون الرسم رديء , فدوال GDI مخصصة لرسم واجهة المستخدم , ونادراً ما تكون متحركة

ما الغرض من رسم كرة تتحرك من الأساس ؟ ربما يوجد طرق أخرى للتحريك أكثر سهولة و أقل إستهلاكاً لموارد النظام

مثلاً تستطيع عمل التحريك في صورة GIF وتضيف الصورة إلى الفورم في PictureBox

أما إذا كان الغرض من التحريك معقد ربما من الأفضل الإطلاع على مكتبات DirectX أو XNA

..

#4
samer226047 كتب:

بسم الله الرحمن الرحيم

هُنالك طريقة قُمت بإتباعها وهي أن لا تقوم بعملية مسح مرة أُخرى

وإنما تقوم برسم كُرة بلون خلفية الشاشة بنفس الإحداثيات القديمة للكُرة

ورسم الكُرة الجديدة في الموقع المطلوب

أتمنى أن أكون قد أفدت

أخوكم في الله : سامر

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

لقد كان في الجافا دالة اسمها paint بها نفس المشكلة الموجود في C# و لكن كانت الجافا تحل المشكلة من خلال استخدام دالة أخرى تسمى paintComponent

Desert_Eagle كتب:

طبيعي أن يكون الرسم رديء , فدوال GDI مخصصة لرسم واجهة المستخدم , ونادراً ما تكون متحركة

ما الغرض من رسم كرة تتحرك من الأساس ؟ ربما يوجد طرق أخرى للتحريك أكثر سهولة و أقل إستهلاكاً لموارد النظام

مثلاً تستطيع عمل التحريك في صورة GIF وتضيف الصورة إلى الفورم في PictureBox

أما إذا كان الغرض من التحريك معقد ربما من الأفضل الإطلاع على مكتبات DirectX أو XNA

..

أهلا بك أخي ..

هل بإمكانك إفادتنا في هذا الموضوع بشكل أكبر !! ؟؟

#5

مكتبات DirectX مخصصة للتطبيقات الرسومية , كالألعاب وغيرها ,

يمكنك البدء بهذا الدرس البسيط :

http://gregs-blog.com/2008/02/29/managed-directx-c-graphics-tutorial-2-drawing-a-triangle/

أما XNA فهي تقنية من ميكروسوفت مخصصة لإنتاج الألعاب ثلاثية أو ثنائية الأبعاد ويمكن إستخدامها مع C# بكل سهولة

http://creators.xna.com/en-US/

..

#6
Desert_Eagle كتب:

مكتبات DirectX مخصصة للتطبيقات الرسومية , كالألعاب وغيرها ,

يمكنك البدء بهذا الدرس البسيط :

http://gregs-blog.com/2008/02/29/managed-directx-c-graphics-tutorial-2-drawing-a-triangle/

أما XNA فهي تقنية من ميكروسوفت مخصصة لإنتاج الألعاب ثلاثية أو ثنائية الأبعاد ويمكن إستخدامها مع C# بكل سهولة

http://creators.xna.com/en-US/

..

جزاك ربي خير على هذا ... ان شاء الله أتابع الموضوع.

#7

هل قمت بتخصيص القيمة true للخاصية DoubleBuffered؟

DoubleBuffered = true;

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

#8

قم بتخصيص القيمة true للخاصية DoubleBuffered

ثم في حدث تحميل الأداة التي تريد الرسم عليها أكتب الكود التالي

this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

this.UpdateStyles();

وعند إعادة الرسم لا تستدعي الطريقة refresh وإنما Invalidate

ولاحظ الفرق

If you want to learn programming start with C++

#9

بالطبع خاصية DoublBuffered لا يمكنك تخصيصها إلا إذا كنت تعمل على نسخة Derived من الـ Class الأساسية

لأن خاصية DoublBuffered محمية (Protected)

مثال

public class xPanel : Panel
{
    public xPanel()
    {
        DoubleBuffered = true;
    }
}

Formerly PYTHON

الراجل الحر .. حر و لو زمانه جار

يمشى ف طريقه .. لا يخشى الشوك ولا لحجار

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…