المتابعون للمدونة

السبت، 27 سبتمبر 2014

أداة اختيار اللون في WPF



 
 
وأنا أجهز مشروعا مكتوبا بـ WPF لرسم المخططات Diagram Designer لأستعين به في شرح قدرات الرسم والتلوين في الكتاب الجديد بإذن الله، احتجت لأداة تسمح للمستخدم باختيار الألوان (مثل الأداة ColorDialog في مشاريع نماذج الويندوز)، لكن للأسف هذه الأداة لا توجد جاهزة في WPF.. السبب في هذا أن WPF لا تتعامل مع الألوان فحسب بل مع الفرشاة Brush التي ترسمها، فكل جزء في الأداة تستطيع تلوينه بفرشاة من أي نوع (فرشاة مصمتة، فرشات تدرج، فرشاة رسم.. إلخ)، مما يسمح لك بالحصول على تأثيرات مدهشة وإمكانيات بلا حدود.

وبالبحث في جوجيل وجدت عدة أدوات لاختيار اللون (الفرشاة بالأحرى)، وكان أفضلها هذه الأداة:


وهي تعرض مستطيلا لمعاينة اللون، عند ضغطه يتم إسدال أداة تتيح اختيار اللون، سواء كان فرشاة مصمتة (من لون واحد متجانس) أو فرشاة تدرج خطي، أو فرشاة تدرج دائري.

لكن هذه الأداة بهذا الشكل لم تكن مناسبة لما أحتاجه، فهي مناسبة أكثر للعرض في نافذة الخصائص لتغيير اللون، لكن لا مكان لها في مشروع مصمم المخططات، فوضعها فوق الأشكال سيزحم المخطط وهو مزدحم بما يكفي بأدوات التدوير وتغير الحجم ومقابض توصيل الأشكال، كما أن الأداة رغم قوتها يعيبها عدم وجود مساحة لمعاينة النتيجة (ما عدا المستطيل الذي تنسدل منه الأداة وهو صغير جدا ولا يقدم معاينة حقيقية تناسب الألوان المركبة التي يمكن الحصول عليها من فرشاة التدرج الخطي أو الدائري).. لهذا قمت بتنزيل الكود الأصلي للأداة من الموقع، وأجريت عليه بعض التعديلات لإضافة أداة جديدة تستخدم أجزاء من الأداة الأولى لعرض مربع حوار اختيار اللون كما هو موضح في الصورة (التي توضح اختيار فرشاة تدرج دائري يدخل في تكوينها أربعة ألوان).

وسأضع لكم الأداة المعدلة بإذن الله في موضوع تال بعد ضبط بعض خصائصها واختبارها.

الأمر الذي يتأكد لي كلما تعاملت مع WPF، أنها أقوى مما أتخيل، وتمنح تسهيلات تفوق التصور، والكود المكتوب بها أقل من كود نماذج الويندوز عشر مرات على الأقل، مع إمكانات يستحيل محاكاة بعضها في نماذج الويندوز..

لا تصدقني؟.. فليكن.. انظر لصورة مشروع رسم المخططات، ودعني أخبرك بما يلي:

-  اللوحة التي أرسم عليها الأشكال هي مربع قائمة ListBox عدلتها لأجعل عناصرها تُرسم على لوحة من النوع Canvas، وبهذا صار بالإمكان تحريك عناصر القائمة بحرية دون أن تكون متراصة كما هو مألوف في القوائم!

-  بتعديل قالب عنصر القائمة، صار أي عنصر أضيفه إلى مربع القائمة (كالشكل الدائرة مثلا) يتم وضعه تلقائيا داخل لوحة خاصة تقدم إمكانيات تغيير الموضع والحجم والتدوير وتوصيل الأشكال وغير ذلك!

-  خطوط شبكة الرسم البياني مرسومة بفرشاة تبليط TileBrush، تكرر رسم مستطيل أبعاده 1 سم × 1 سم على لوحة الرسم.

-  نافذة المعاينة التي تعرض خريطة صغيرة للأشكال المرسومة على اللوحة، ليست أكثر من صورة مرسومة بفرشاة المرئيات VisualBrush التي تقوم بالتقاط صورة لأي أداة تريدها وتحديثها تلقائيا كلما حدث تغيير لشكل الأاداة!

-  صندوق الأدوات الذي يعرض رموز الأشكال المستخدمة في الرسم، صممته ليسمح لك بإضافة أي أشكال تريدها من خارج البرنامج، فهو ينظر في المجلد ToolBox، وكل مجلد يجده داخله ينشئ له شريطا باسمه على صندوق الأدوات، ويضع عليه الأدوات المعرفة في ملفات xaml الموجودة داخل هذا المجلد!.. وهذا معناه أنك تستطيع تعريف أي أشكال بكود xaml ووضعها في هذا المجلد، ليتم عرضها في صندوق الأدوات.. هذه الأشكال يمكن أن تكون أدوات Wpf أو رسوما هندسية أو صورا أو حتى فديوهات!!

هل صدقتني الآن أن الأمر مذهل ويعتبر نقلة كبيرة بالنسبة لمبرمجي نماذج الويندوز؟

أنصحك ألا تتأخر أكثر من هذا في تعلم WPF، فهي لغة ممتعة بحق، تتيح لخيالك أن ينطلق بلا حدود.

 

 


ليست هناك تعليقات:

إرسال تعليق

صفحة الشاعر