#1
|
||||
|
||||
الدرس السابع : التنقل في ملف الميديا - دورة CSharp 2005
الدرس السابع التنقل في الملف ملف الصوت أو الفيديو يحتوي على خاصية طول الملف أي أن كل ملف له طول زمني ويتم قياس الطول في مشغلات ميكروسوفت بالثانية , وفي مشغلات rm بالملي ثانية يتم إيجاد طول الملف من خلال الخاصية Duration في مشغلات ميكروسوفت أو الخاصية GetLength في مشغلات rm مثلا التعليمة التالية : كود PHP:
أم التعليمة التالية: كود PHP:
إذاً هناك فرق كبير بين قيمة طول الملف في مشغلات ميكروسوفت ومشغلات rm من أهم الوظائف لأي مشغل ميديا هو إمكانية التنقل عبر الملف سوءاً تقديماً أو تأخيراً ويتم التنقل عبر الملف من خلال تعديل خاصية من خصائص كائن التشغيل الخاصية ترجع قيمة تحتوي على رقم يمثل موقع التشغيل الحالي مثلاً إذا أرجعت الخاصية الرقم 50 في مشغل ميكروسوفت فهذا يعني أن تشغيل الملف وصل إلى الثانية رقم 50 أما إذا أرجعت 40000 في مشغلات rm فهذا يعني أن تشغيل الملف وصل إلى الثانية رقم 40 الخاصية في مشغلات ميكروسوفت هي CurrentPosition سواءاً لقراءة القمية أو لتعديلها فمثلاً التعليمة التالية: كود PHP:
وأرجعت الرقم 50 فهذا يعني أن تشغيل الملف وصل إلى المنتصف أما التعليمة التالية: كود PHP:
وفي مشغلات rm هي GetPosition لقراءة القمية أو SetPosition لتعديل القيمة فمثلاً التعليمة : كود PHP:
وأرجعت الرقم 5000 فهذا يعني أن التشغيل وصل إلى الثانية رقم 5 اي إلى منتصف الملف أما التعليمة التالية: كود PHP:
وليست بالثانية كما في مشغلات ميكروسوفت , والثانية الواحد = 1000 ملي ثانية إذاً التنقل عبر الملف يتم من خلال تعديل خاصية موقع التشغيل الموقت Timer المؤقت هو عبارة عن كائن لضبط الوقت , ويستخدم لتكرار حدث معين خلال فترة زمنية محددة مثلاً إظهار رسالة كل 50 ثانية , أو تنفيذ كود معين كل 10 ثوان يتم تحديد طول الفترة الزمنية من خلال تعديل الخاصية "الصفة" Interval حيث أن هذه الخاصية تأخذ الزمن بالملي ثانية أي أنه إذا أردنا أن تكون الفتره ثانية واحدة فإن الخاصية Interval يجب ان تكون قيمتها 1000 , وإذا أردنا ثانيتين تكون 2000 ويتم كتابة الكود المراد تنفيذه من خلال الضغط مزدوجاً على المؤقت في هذا الدرس سنستخدم الموقت ليفحص موقع تشغيل الملف كل ثانية التطبيق إفتح تطبيق الدرس السابق , وأضف زرين للتقديم والتأخير أضف مؤقت Timer , ستلاحظ انه سيضاف إلى الشريط الأصفر تحت نافذة التصميم إختر المؤقت وقم بتعديل خاصية Interval إلى 1000 ,"ثانية واحدة" وعدل قيمة الخاصية Enabled إلى True , هذه الخاصية تقوم بتشغيل أو تعطيل عمل الموقت فإذا كانت القمية True فالمؤقت مفعل , أما إذا كانت False فهو معطل ولن يعمل أضف كائن التنقل TrackBar ليستخدم كأداة تنقل عبر الملف إختر كائن التنقل و عدل الخاصية TickFrequency إلى 0 لكي تختفي خطول القياس وعدل الخاصية TickStyle إلى Both إذا أردت كائن التنقل يرجع قيمة بين الخاصيتين Minimum و Maximum فمثلاً إذا كان Minimum = 0 و Maximum=50 فإن الخاصية Value سترجع قيمة بين 0 و 50 تمثل مكان المؤشر بالنسبة للكائن فمثلاً إذا كان المؤشر في منتصف الكائن فإن Value سترجع الرقم 25 وبما اننا نحتاج للتنقل عبر الملف فالمفروض أن نعدل الخاصية Minimum إلى 0 ونعدل الخاصية Maximum إلى طول الملف حتى ترجع القمية Value رقم بين 0 وطول الملف وبما أن طول كل ملف يختلف عن الملف الآخر , فإننا سنعدل الخاصية Maximum عند تحميل أي ملف ولن نحتاج لتعديل الخاصية Minimum لأن قيمتها الإفتراضية هي 0 سيصبح شكل النافذه هكذا: إجراء ضبط كائن التنقل إنقل هذا الكود إلى شفرة البرنامج مع مراعات أن يكون خارج أي إجراء آخر كود PHP:
فإذا كان نوع الملف صوت أو فيديو فإنا نأخذ طول الملف عبر الخاصية Duration ثم نحول الرقم إلى عدد صحيح عبر كائن التحويل Convert.ToInt32 والرقم الناتج نحملة لخاصية Maximum في كائن التنقل , وبهذا مهما تنقلنا في الكائن فأن القيمة الناتجة ستكون بين 0 و طول الملف إما إذا كان نوع الملف rm فإنا نأخذ طول الملف عبر الخاصية GetLength ونحول الرقم إلى عدد صحيح ونحمله للخاصية Maximum ذلك هو إجراء ضبط القيمة العظمى لكائن التنقل ,لكن أين نستدعي هذا الإجراء ؟؟؟ أفضل مكان لإستدعاء هذا الإجراء هو بعد تحميل الملف أي بعد إستدعاء إجراء التحميل LoadFile إفتح كود زر فتح الملف وأضف تعليمة الإستدعاء بعد تعليمة إستدعاء إجراء تحميل الملف: كود PHP:
بعد أن قمنا بضبط القمية العظمى لكائن التنقل نحتاج لكود التنقل عبر الملف إي أننا نحتاج لكود يقوم بالتنقل عبر الملف بمجرد تغيير مؤشر كائن التنقل إضغط مزدوجا على كائن التنقل لتنتقل إلى الكود الذي يتنفذ بمجرد تغيير المؤشر TrackBar1Scroll إنسخ الكود التالي : كود PHP:
trackBar1.Value ترجع رقم بين 0 و طول الملف على حسب موقع المؤشر حيث نقوم بفحص نوع الملف فإذا كان فيديو أو صوت نعدل موقع التشغيل عبر الخاصية CurrenPosition أما إذا كان rm فنعدل موقع التشغيل عبر الخاصية SetPosition. الآن نحتاج إلى كود لتحريك مؤشر كائن التنقل ليحدد الموقع الذي وصل إليه التشغيل لعمل ذلك نحتاج لإستخدام المؤقت حيث نقوم كل ثانية بفحص موقع التشغيل ونعدل موقع المؤشر إضغط مزدوجاً على كائن المؤقت لتنتقل إلى الكود الذي ينفذ كل ثانية وأنسخ الكود التالي : كود PHP:
يقم الكود السابق بفحص نوع الملف فإذا كان صوت أو فيديو نقوم بأخذ موقع التشغيل الحالي عبر الخاصية CurrentPosition ونحولها إلى عدد صحيح ونحمل الرقم الناتج إلى الخاصية Value حيث أن الخاصية Value تمثل موقع مؤشر كائن التنقل . وإذا كان الملف rm نأخذ طول الملف عبر الخاصية GetPosition ونحولها إلى عدد صحيح ونحملها في خاصية موقع المؤشر Value الكود السابق يقوم بتغيير موقع مؤشر كائن التنقل على حسب موقع التشغيل الذي وصل إليه الملف. بقي لنا كود زري التقديم والتأخير .. إضغط مزدوجاً على زر التقديم وأنقل الكود التالي : كود PHP:
أي أننا إذا ضغطنا على زر التقديم فان التشغيل سيقفز 20 ثانية إلى الأمام يمكن وضع عدد أكبر من العشرين ثانية إذا أردت أو أصغر .. لاحظ أنه إذا كان نوع الملف rm فإننا إضفنا إلى الموقع الحالي 20000 لأن مشغل rm يتعامل بالملي ثانية شغل البرنامج وإفتح ملف ميديا وجرب تحريك مؤشر كائن التنقل. الواجب * أكتب كود زر التأخير .. * قد يحدث خطأ في زري التقديم والتأخير إذا تم التأخير لأقل من صفر أو التقديم لأكثر من طول الملف لذلك يجب وضع كود الزرين داخل جملة try هكذا: كود PHP:
* أرسل التطبيق. ملاحظات: * تأكد من إتجاه مؤشر كائن التنقل من خلال الخاصية RightToLeft. * لجعل خلفية الزر شفافة عدل خاصية FlatStyle إلى Popup و خاصية BackColor إلى Transparent * يمكن تغيير الصور في الأزرار بواسطة الخاصية Image. * يمكن تعديل لون خلفية الكائن الحاضن للفيديو إلى شفاف لتصبح كما في الصورة . * للأسف ليست كل الكائنات تدعم الخلفية الشفافة , فكائن التنقل مثلاً لا يدعمها .. ملاحظة لمستخدمي بيئة Sharp Developer: إحياناً عند الضغط المزدوج على المؤقت يحصل خطأ وتغلق بيئة التطوير ولكتابة كود المؤقت إذا حدث هذا الخطأ دون الضغط مزدوجاً على المؤقت: افتح شفرة التصميم من خلال فتح مستعرض الملفات ثم فتح MainForm.Designer.cs و ابحث عن كود تعريف المؤقت وأضف بعده هذا السطر: كود PHP:
ثم إفتح شفرة البرنامج عند الإجراءات من خلال إختيار MainForm.cs وأضف هذا الإجراء وتأكد أنه خارج أي إجراء: كود PHP:
..
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس الخامس : تشغيل ملف فيديو - دورة CSharp 2005 | khaledbelal | دورة CSharp 2005 من منتديات المشاغب | 0 | 03-22-2010 03:26 PM |
الدرس الرابع : الإجراءات والدوال - دورة CSharp 2005 | khaledbelal | دورة CSharp 2005 من منتديات المشاغب | 0 | 03-19-2010 03:39 PM |
الدرس الثالث : الجمل الشرطيه - دورة CSharp 2005 | microtop | دورة CSharp 2005 من منتديات المشاغب | 1 | 03-16-2010 06:19 PM |
الدرس الثاني : المتغيرات - دورة CSharp 2005 | khaledbelal | دورة CSharp 2005 من منتديات المشاغب | 0 | 03-12-2010 03:56 PM |
الدرس الاول : مفهوم لغات البرمجة - دورة CSharp 2005 | microtop | دورة CSharp 2005 من منتديات المشاغب | 0 | 03-09-2010 05:45 PM |