المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثالث عشر : التحكم بمستوى الصوت - دورة CSharp 2005


khaledbelal
03-22-2010, 04:19 PM
الدرس الثالث عشر


التحكم بالصوت

هناك العديد من الطرق للوصول إلى إجهزة الصوت في نظام التشغيل

منها الطريقة المباشرة و التي تتعامل مباشرة مع محركات أجهزة الصور

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

وهناك طرق غير مباشرة تتعامل مع أدوات تشكل وسيط بين أجهزة الصوت ولغة البرمجة

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

الإداة الوسيطة التي سنستخدمها هي أداة Homa_Audio

وهذه الأداة تستخدم إصدار حديث من مكتبة Microsoft.DirectX.dll

وتستخدم مكتبة جديدة Microsoft.DirectX.DirectSound.dll

وبالتالي يجب إستبدال أداة Microsoft.DirectX.dll من الدروس السابقة

بالإصدار الجديد الذي سيتم تنزيله مع الأداة الوسيطة

التطبيق:

أنسخ هذا الملف (http://www.7oma.com/csharp/Homa_Audio.zip)إلى مجلد Debug داخل مجلد bin داخل مجلد المشروع

الإن إفتح المشروع , ومن نافذة متصفح المشروع إختر Add Reference كما فعلنا في الدرس الرابع :

http://www.7oma.com/csharp/images/image4-3.jpg

ستظهر لك هذه النافذة:

http://www.7oma.com/csharp/images/image13-1.jpg

إختر Browse من تبويب .Net Assemply ثم أضف ملف

Homa_Audio.dll

الذي قمت بتنزيله

حتى يظهر الملف في قائمة الملفات المختارة رقم 3 , ثم إختر OK

سترى أن الملف تم إضافتها إلى قائمة الملفات الملحقة :

http://www.7oma.com/csharp/images/image13-2.jpg

الآن في أعلى كود النافذة الرئيسية للبرنامج

قم بإستدعاء الملف ليتعرف عليه المعالج وذلك بإضافة الكود:

using Homa_Audio;

يضاف هذا الكود أسفل تعليمات الإضافة السابقة كما في الصورة :

http://www.7oma.com/csharp/images/image13-3.jpg

الآن قم بتعريف كائن التحكم بالصوت :

private HVolume hv=new HVolume();

تحت المتغيرات من الدروس السابقة :

وإذهب إلى التصميم , وإسحب إلى الفورم إداة TrackBar


وغير ترتيب أدوات الفورم حتى يصبح شكلها هكذا :

http://www.7oma.com/csharp/images/image13-5.jpg

ثم إختر الأداة التي قمت بإضافتها وغير خاصية Name إلى vt

وغير أيضاً خاصية Value من 0 إلى 10 حيث ستكون هذه هي أداة التحكم بالصوت

من التصميم أنقر مزدوجاً على أداة التحكم بالصوت لتنتقل إلى الكود , ثم أكتب هناك الكود التالي :


hv.Volume=vt.Value;

كائن التحكم بالصوت hv يحتوي على خاصية Volume تستقبل رقم من 0 إلى 10 يمثل مستوى الصوت

فلو أسندنا لهذه الخاصية القيمة 0 فلن نسمع أي صوت

وبالتالي فهذه الخاصية ستأخذ أي قيمة من 0 إلى 10 من خلال كائن شريط التحكم بالصوت vt

الكود السابق يقوم بقراة قيمة شريط التحكم بالصوت vt و إسنادها إلى كائن التحكم بالصوت hv

الواجب :

أضف مربع إختيار Check Box يمثل خاصية كتم الصوت ليصبح التطبيق هكذا :

http://www.7oma.com/csharp/images/image13-6.jpg

مساعدة :

إسحب أداة مربع الإختيار إلى النافذة الرئيسية :

http://www.7oma.com/csharp/images/image13-7.jpg

ثم إختره وغير خاصية Name إلى mute وخاصية Text إلى "كتم"

ثم أنقر عليه مزدوجاً لتنتقل إلى الكود وأكتب هذا الكود هناك :

if(mute.Checked)
{
hv.Volume=...;
}
else
{
hv.Volume=vt.Value;
}

الكود السابق يفحص مربع الإختيار إذا كان مختاراً ينفذ من بين الحاصرتين الأولى

وإن لم يكن مختاراً ينفذ ما بين الحاصرتين الثانية وهي إسناد قيمة شريط التحكم بالصوت vt.Value

إلى خاصية Volume في كائن التحكم بالصوت hv

أكل الفراغ بقيمة محددة لكتم الصوت - تم شرحها سابقاً في الدرس -

ثم أرسل التطبيق

ملاحظة :

عند تشغيل التطبيق ثم تفعيل مربع "كتم" سينقطع الصوت

ولكن عند تحريك شريط التحكم بالصوت سيرجع الصوت مع أن مربع "كتم" مفعل

وبالتالي يجب وضح شرط في حدث تحريك كائن الصوت ليتم فحص مربع "كتم"

فإذا كان مربع "كتم" مفعلاً فلا يجب أن يتغير الصوت , ويصبح كود تحريك شريك التحكم بالصوت هكذا :

if(mute.Checked)
{
}
else
{
hv.Volume=vt.Value;
}

الكود السابق يفحص إذا كان مربع "كتم" مفعل فلن ينفذ شي

وإن لم يكن مفعلاً فسينفذ كود تغيير الصوت

يمكن كتابة الكود السابق بطريقة أخرى , بإستخدام معامل العكس !

حيث يتم إضافة رمز التعجب ! قبل الجملة المنطقية ليعكس الجملة كلها

مثلاً :


if(mute.Checked)

تعني إذا كان مربع الكتم مفعل , و :


if(!mute.Checked)

تعني إذا لم يكن مربع الكتم مفعلاً

وبالتالي فيمكن كتابة كود تحريك شريط التحكم بالصوت هكذا :

if(!mute.Checked)
{
hv.Volume=vt.Value;
}

. نهاية الدرس الثالث عشر





و ما زالت الدروس مستمرة