برمجة بلغة c و c++ و c# برمجة بلغة السي وتطوراتها وجديدها وكل ما يلزمها

إضافة رد
قديم 03-02-2009, 04:24 PM
  #1
شنفرى
 
La spécialité: GSM
اخرى ( جامعة عربية او اجنبية )
تاريخ التسجيل: 21-08-2008
الدولة: system32
المشاركات: 2,401
شنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداعشنفرى عضو محترف الابداع
06 درس في لغة #c : تشغيل ملف فيديو


تشغيل ملف فيديو

دوال تشغيل الفيديو موجودة في ملف Microsoft.DirectX.AudioVideoPl ayback.dll

الذي أضفناه إلى التطبيق في الدرس السابق

دوال الفيديو تشبه إلى حد كبير دوال الصوت عدى عن إختلافات بسيطة

من اهم هذه الإختلافات أنه يمكنك أن تحدد كائن حاضن Owner Control لشاشة الفيديو

معنى كائن حاضن اي كائن يعمل كشاشة فيديو

أما إذا لم تحدد كائن حاضن فان التطبيق سيفتح نافذه جديدة لتكون شاشة الفيديو

قراءة أحداث المفاتيح

كل كائن له صفات و دوال كما عرفنا سابقاً , والكائنات تحتوي أيضاً على أحداث Events

مثلاً الزر له عدة أحداث منها عند الضغط عليه Click وعند الضغط المزدوج DoubleClick

و عند مرور مؤشر الماوس به MouseOver

وفي الدروس السابقة إستخدمنا حدث Click فقط

للتصفح بين أحداث الكائن , إختر الكائن ثم أفتح نافذة الصفات "الخواص" واختر زر الأحداث:



ستظهر لك قائمة بجميع الأحداث للكائن المحدد

ولكي تضيف تعليمات عند حدوث حدث معين اضغط مزدوجاً على أسم الحدث في القائمة

ستتنتقل إلى الشفرة لتكتب التعليمات التي تنفذ عن حدوث ذلك الحدث

ومن الأحداث المهة حدث KeyPress وينطلق هذا الحدث عند الضغط على أي مفتاح

في لوحة المفاتيح .

التطبيق

إفتح تطبيق الدرس السابق وعدل النص في زر فتح ملف الصوت إلى "فتح ملف ميديا"

وفي زر تشغيل ملف الصوت إلى "تشغيل ملف ميديا"

أضف زراً جديداً وغير النص فيه إلى "ملئ الشاشة"

قبل تشغيل ملف الفيديو يجب أن نحدد له كائن حاضن ليعمل كشاشة

افتح التصميم وأضف أدات البانيل إلى الفورم:



تأكد من إختيار البانيل و غير صفة الإسم إلى p1

غير صفة العرض Width إلى 400 وصفة الإرتفاع Height إلى 300



من خلال صفة BackgroundImage إختر اي صورة لتكون خلفية الشاشة

ليصبح شكل النافذة هكذا:



أضغط مزدوجاً على أي زر للذهاب إلى الشفرة ,

نحتاج إلى تعريف كائن عام Global من نوع فيديو ولأننا سنستخدمة في أكثر من إجراء

سنعرفه خارج جميع الإجراءات والدوال , إذهب إلى الشفرة حيث عرفنا متغير الصوت في الدرس السابق

وأكتب تعريف كا ئن الفيديو :


كود:

كود:
private Video vp;
تحت تعريف كائن الصوت من الدرس السابق :



سنجعل التطبيق يفتح ملفات صوت أو ملفات فيديو , لكن المشكلة أن للصوت كائن

وللفيديو كائن آخر , وبالتالي يجب أن نعرف نوع الملف حتى نستخدم الكائن المحدد

وبما أن أنواع الفيديو كثيرة جداً فلا يمكننا فحص نوع الملف لتأكد من نوعه

وبالتالي فالحل الوحيد هو أن نحاول أولا تشغيل الملف بكائن الفيديو

فإن ظهر لنا خطأ فنحاول نشغلة بكائن الصوت , وأن ظهر لنا خطأ للمرة الثانية فالملف غير صالح

قد يسأل البعض لماذا بدأنا بتجربة كائن الفيديو مع أن معظم الملفات ستكوت صوت

والإجابة أن كائن الصوت ممكن أن يشغل ملفات فيديو بدون صورة , يعني انه يفتح ملف الفيديو

ويشغل الصوت الذي فيه , وبالتالي فربما يكون الملف فيديو ويتم تشغيله كملف صوت

لذلك يجب أولاً تجربة كائن الفيديو حتى إذا كان ملف فيديو يشغل الصوت مع الصورة

وإذا كان ملف صوت نجرب كائن الصوت ..

لعمل ذلك نحتاج إلى تنفيذ جملة تعقب الإخطاء try مرتين متداخلتين:

اقتباس:
try
{
//شغل ملف الفيديو
}
catch
{
try
{
//شغل ملف الصوت
}
catch
{
//الملف غير صالح
}
}
أولا سنجرب فتح ملف فيديو فإذا حدث خطأ فإن المترجم ينتقل لتنفيذ التعليمات داخل جملة catch

والتي هي باللون الأزرق , وهناك جملة tryأخرى نقوم من خلالها بتجربة فتح ملف صوت

فإذا حدث أي خطأ فان المترجم ينتقل لتنفيذ تعليمات catch التي تحتها خط

في زر فتح ملف الميديا أمسح الكود السابق وأكتب بدلاً عنه :

كود:
  OF.ShowDialog();
            try
            {
                vp = Video.FromFile(OF.FileName);
                vp.Owner = p1;
                p1.Width = 400;
                p1.Height = 300;
            }
            catch
            {
            try
            {
            ap = Audio.FromFile(OF.FileName);
            }
            catch
            {
            MessageBox.Show("الرجاء إختيار ملف صالح");
            }            
              
            }
التعليمة OF.ShowDialog تفتح نافذة فتح ملف ميديا

عند إختيار الملف نجرب تشغيل الفيديو عبر هذه التعليمات:

كود:
vp = Video.FromFile(OF.FileName);
vp.Owner = p1;
p1.Width = 400;
p1.Height = 300;
في السطر الأول نحمل الملف الموجود في كائن فتح الملف إلى كائن الفيديو

في السطر الثاني نحدد الكائن الحاضن Owner لكائن الفيديو

في السطر الثالث والرابع , نعيد تحديد حجم الكائن الحاضن إلى الحجم الأصلي

لأن ملفات الفيديو لها أحجام مختلفة وحجم الكائن الحاضن قد يختلف على حسب حجم الصورة

في ملف الفيديو لذلك من الأفضل إعادة تحجيم الكائن الحاضن

عند حدوث أي خطأ سينتقل المترجم لتنفيذ الكود باللون الأزرق وتعليمة تحميل ملف الصوت إلى كائن الصوت:

كود:
ap = Audio.FromFile(OF.FileName);
عند حدوث خطأ آخر هنا سينتقل المترجم إلى تنفيذ تعليمة catch الداخلية وهي إظهار رسالة الخطأ

سنستخدم نفس الطريقة في إجراء الضغط على زر تشغيل ملف الميديا

إفتح التصميم وأضغط علية مزدوجاً للإنتقال للشفرة أمسح الشفرة الموجودة وأكتب بدلاً منها:

كود:
 try
            {
            vp.Play();
            }
            catch
            {
            try
            {
                ap.Play();
            }
            catch
            {
            MessageBox.Show("حدث خطأ اثناء محاولة تشغيل الملف");
            }
            }
نجرب تشغيل ملف الفيديو وإذا حدث خطا نجرب تشغيل ملف الصوت وإذا حدث خطأ آخر نظهر رسالة.

افتح التصميم واضغط مزدوجاً على زر ملئ الشاشة وأكتب تعليمة ملئ الشاشة لكائن الفيديو:

كود:
vp.Fullscreen = true;
كائن الفيديو يحتوي على صفة Fullscreen من نوع قيمة بوليانية اما صح أو خطأ

فإذا حددنا الصفة بقية true فأن تشغيل الفيديو سيكون ملى الشاشة

و إذا حددناها false سيرجع تشغيل الفيديو إلى الكائن الحاضن

عرفنا كيف نجعل التشغيل ملئ الشاشة لكن المشكل كيف نرجعه للكائن الحاضن

لأنه في وضع ملى الشاشة لن نستطيع أن نرى أي شيئ في شاشة الكمبويتر سوى الفيديو

يأتي هنا دور حدث الضغط على أي من مفاتيح لوحة المفاتيح حيث سنجعل الفيديو

يرجع إلى الكائن الحاضن بمجرد الضغط على أي من مفاتيح لوحة المفاتيح

إفتح التصميم وإختر النافذة الأساسية "لا تختر أي زر أو كائن تأكد من إختيار النافذه كلها"

إذهب إلى قائمة الإحداث وأضغط مزردوجاً على الحدث KeyPress



ستنتقل إلى شفرة الحدث , أكتب تعليمة إعادة صورة الفيديو إلى الكائن الحاضن :

كود:
vp.Fullscreen = false;
هناك مشكلة ستواجهنا هنا وهي في حالة إذا كان تركيز لوحة المفاتيح على زر محدد

فلن ينطلق حدث الضغط على النافذة , سينطلق الحدث على الزر المحدد فقط

والشفرة السابقة على النافذه الأساسية ,,,

الحل أن هناك صفة في النافذة تمكنها من إطلاق الحدث حتى ولو حصل في أي كائن من الكائنات

هذه الخاصية هي KeyPreview عدلها من False إلى True لتصبح كما في الصورة



الآن شغل البرنامج وجرب تشغيل ملف صوت أو فيديو او ملف نصي

تلميحات الأدوات

أحيانا تحتاج إلى إظهار ملا حظة بسيطة للمستخدم عن وظيفة زر في التطبيق مثلاً

وتظهر هذا الملاحظات في مستطيل أصفر يظهر بمجرد مرور الماوس من فوق الزر

مثلاً لو تمرر الماوس فوق زر Start في شريط المهام ستظهر هذه الملاحظة

Click here to begin

لعمل مثل هذه الملاحظات في تطبيقنا نحتاج لإضافة كائن جديد

افتح التصميم واسحب كائن تلميحات الأدوات ToolTip



الآن في أي كائن تختارة ستجد صفة جديدة إسمها ToolTip on toolTip1

أكتب فيها أي تلميح نصي للكائن :



عند تشغيل البرنامج وتمرير الماوس من فوق الزر ستظهر الملاحظة هكذا:



شنفرى غير متواجد حالياً  
رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
ععتاىلالال

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
نظام تشغيل الأقراص dos يوسف الضادي نظام التشغيل الدوس 11 17-08-2013 11:11 PM
{رجيستراي} لا يظهر سطح المكتب عند بدء تشغيل الوندوز زنيني تبادل الخبرات في مجال الحاسب 4 29-05-2011 02:21 AM
تشغيل الأطفال و الإنحراف.pdf azize_arifi علم الاجتماع 2 28-05-2010 03:20 PM
مشكلات بدء تشغيل الجهاز نرمين* منتــدى البرمجــة العـــام 6 11-04-2010 12:38 PM
تشغيل اتوكاد 2004 Cherif hassen هندسة المساحة و الطرق 5 19-11-2009 10:37 AM


الساعة الآن 03:01 AM.