05-10-12, 06:53 PM
كاتب الموضوع : silverlight
بسم الله الرحمن الرحيم
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
مقدمـــــة:
هناك الكثير من الأساليب التي من الممكن استخدامها لصناعة ColorPicker Control وتختلف هذه الأساليب طبقا لرؤية المبرمج ولو بحثت في النت جيدا عزيزي القارئ لسوف تجد الكثير من الأفكار لصناعة الكونترول الذي نتحدث عنه ألا وهو ColorPiker Control
غالبا ما يتم صناعة مثل هذا الكونترول باستخدام +GDI أو أيضا باستخدام API وهذا الأسلوب قد يحتاج الي أن يكون المبرمج لدية خبرات جيدة في استخدام +GDI ولربما يجد الكثير من المبرمجين صعوبة في التغلب علي المشاكل المصاحبة لعمليات الرسم المختلفة وأيضا التغلب علي متاهة استخدام دوال API
عموما يوجد هناك طرق كثيره لصناعة مثل هذا الكونترول لكن أيضا ومن المؤكد أن هناك طرق بسيطة جدا لصناعة مثل هذا الكونترول وهذا المقال سوف يوضح لك عزيزي القارئ كيفية صناعة ColorPicker Control ولكن بأبسط الطرق
ماذا نحتاج لنصنع ColorPicker Control
دراية بسيط بكيفية صتاعة Library
دراية بسيطة بعمليات الرسم +GDI
دراية بسيطة بكيفية إضافة Events الي الكونترول
الفكرة
تنحصر فكرة الكونترول في بناء كونترول بسيط سيعمل كأنه مستطيل وسوف نطلق علي PickerButton ومن ثم نضيف أي عدد من هذا الكونترول الي الكونترول الرئيسي وهو ColorPicker Control
الكلاس PickerButton
هذا الكلاس بسيط جدا وقد تم توريثه من الكلاس Control وقد تم إضافة بعض الصفات له وهي كالأتي:
1- الصفة Color Property وهي تمثل القيمة التي نريد استرجاعها لاحقا من داخل الكلاس ColorPicker
2- الصفة Selected Property وهي عبارة عن Boolean والهدف منها هو التأكد أن الكونترول قد تم اختياره بواسطة الماوس ومن ثم نرسم مستطيلا حول الكونترول بلون ما
3- الصفة Highlighted Property وهي عبارة عن Boolean والهدف منها هو التأكد أن الماوس موجود علي الكونترول وبالتالي نرسم الكونترول بلون ما وأيضا نرسم مستطيلا حول الكونترول بلون معين نختاره
الكلاس ColorPicker
هذا الكلاس تم توريثه أيضا من الكلاس Control وعلي سبيل المثال لا الحصر لقد تم إضافة الأكواد التالية اليه
1- الحدث SelectedColorChanged Event ولسوف يتم إطلاق هذا الحدث في كل مرة يتغير فيها اللون الذي نريد إسترجاعه من الكلاس PickerButton
2- تم إضافة الصفة Color Property وهي تعادل أو تمثل القيمة التي نريد استرجاعها لاحقا من داخل الكلاس ColorPicker ومن ثم نستخدم هذا اللون كيفما شئنا
3- أهم شئ أريد توضيحه هو كيفية أيجاد PickerButton الذي اختاره المستخدم عند النقر علي باتون ما .......... في الواقع الأمر في غاية البساطة بما أن الكلاس PickerButton ما هو إلا كونترول لذلك كل ماهو مطلوب بناء دالة بسيطة تقوم بالبحث في كل Controls الموجود داخل ColorPicker ومن ثم تسترجع PickerButton الذي قام المستخدم باختياره وشكل هذه الدالة كالأتي
كود :
Protected Function FindPickerButton(ByVal clr As Color) As PickerButton
For Each ctrl As Control In MyBase.Controls
Dim pickerBtn As PickerButton = TryCast(ctrl, PickerButton)
If ((Not pickerBtn Is Nothing) AndAlso (pickerBtn.Color = clr)) Then
Return pickerBtn
End If
Next
Return Nothing
End Function
كل ما عليك عزيزي القارئ هو أن تقوم بعمل Build للكلاس ومن ثم تضيفه الي الفورم مثلا
ثم تطلق الحدث ColorPicker_SelectedColorChanged وداخل هذا الحدث تساوي اي لون تريده مع اللون الذي يتم اختياره
والكود التالي يوضح ذلك
كود :
Public Class Form1
Private Sub ColorPicker1_SelectedColorChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ColorPicker1.SelectedColorChanged
Me.Label1.BackColor = Me.ColorPicker1.Color
End Sub
End Class
بالمرفقات نسختان أحدهما بالفبجوال 2010 والأخري بنسخة 2008 يمكنكم إنزال ما يناسبكم من أيهما
تقبلو تحياتي
أخوكم عمر