التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[WPF حتى الاحتراف] {3.7} - اداة الـCanvas
#1
السلام عليكم ورحمة الله وبركاته







اداة الCanvas



هي اداة من ادوات الLayout ، تستعمل لترتيب الاشكال بالنظام الاحداثي







سابقا اتفقنا انه نستعمل الMargin لتضبيط مواقع العناصر ، لكن لاينفع ترتيب العناصر التي هي عبارة عن (اشكال) بواسطة Margin

تخيل انك استدعيت دالة DrawLine ، هذه الدالة تطلب منك احداثيات نقطة البداية والنهاية  ، وبما ان اغلب ادوات الLayout الاخرى لاتدعم النظام الاحداثي لذلك لايوجد حل الا بترتيب الاشكال باستعمال الCanvas


ملاحظة : ابدا لاتستعمل الـCanvas لترتيب العناصر التي هي عبارة عن (Controls) امثال البوتون وماشابه - فهي فقط مخصصة للاشكال .












خصائص مهمة







Top & Left



اهم خاصية في الـCanvas ، وتستعمل لتحديد موقع الشكل ، تقدر تعتبرها كانها X و Y :






الكود المسؤول عن تكوين الشكل السابق :

PHP كود :
       <Canvas>
 
           <Rectangle Height="60" Canvas.Left="50" Stroke="Black" Canvas.Top="30" Width="103" Fill="#FFA8A8B9"/>
 
       </Canvas







-----------------------







ZIndex



مثل BringToFront ، تحدد من خلالها رقم ، فإذا كان الرقم الذي ادخلته اكبر من جميع ارقام العناصر ، سيصبح عنصرك في المقدمة :








كود XAML :-

PHP كود :
<Canvas>
 
   <Ellipse Fill="Green" Width="60" Height="60" Canvas.Left="30" Canvas.Top="20"    
             Canvas
.ZIndex="1"/>
 
   <Ellipse Fill="Blue"  Width="60" Height="60" Canvas.Left="60" Canvas.Top="40"/>
</
Canvas














تغيير Top & Left برمجيا



اكثركم ربما يفكر ان تغيير هذه الخاصيتين سهل .. فقط كتابة مثل rectangle.Top سيفي بالغرض !!


لكن الحقيقة ليست كذلك ، لان هذه خاصيتين تعتبران Attached property مما يعني انهما ليستا تابعتين للRectangle ، انهما تابعتان للCanvas .
Canvas.Left & Canvas.Top


لكن بما ان الCanvas تحضن الRectangle ، قتم عمل Attach لهذه الخاصيتين للابناء ، ولكن ذلك لايعني انهما صارتا تابعتين للrectangle


اذن كيف يمكنني التعامل معهما بالكود ؟؟


بما انهما Attached property  ، وال Attached property  هو نوع من انواع ال Dependency property  ، فإن لهذه الخواص طريقة قياسية لجلب وتعيين القيم :




PHP كود :
       private void rectangle1_MouseLeftButtonDown(object senderMouseButtonEventArgs e)
 
       {
 
           //تعيين top & left
 
           rectangle1.SetValue(Canvas.LeftProperty30d);
 
           rectangle1.SetValue(Canvas.TopProperty20d);

 
           //جلب top & left
 
           double left = (double)rectangle1.GetValue(Canvas.LeftProperty);
 
           double top = (double)rectangle1.GetValue(Canvas.TopProperty);
 
       



فيجوال بيسك :

PHP كود :
Private Sub rectangle1_MouseLeftButtonDown(sender As ObjectAs MouseButtonEventArgs)
 
'تعيين top & left
 rectangle1.SetValue(Canvas.LeftProperty, 30.0)
 rectangle1.SetValue(Canvas.TopProperty, 20.0)

 '
جلب top left
 Dim left 
As Double CDbl(rectangle1.GetValue(Canvas.LeftProperty))
 
Dim top As Double CDbl(rectangle1.GetValue(Canvas.TopProperty))
End Sub 






كما رايتم اعزائي ـ تم استخدام دالتي GetValue & Setvalue وتستعمل هذه فقط قي حال كانت الخاصية التي تريد تغييرها من نوع Dependency property وبما ان الـ Attached Property تعتبر من انواع Dependency property فتم استعمال هاتين الدالتين .


الشي الاخر الذي احب ان انوه له هو استعمال التابعة d بعد تعيين القيمة ، وذلك يعني تحويل الرقم الى صيغة double ، فخاصيتي Top & Left لاتقبل سوى الارقام التي في صيغة double














المهمة



المهمة المطلوبة منكم اخواني الاعزاء هي تنفيذ النموذج التالي :-








انتهى
الرد }}}


الردود في هذا الموضوع
[WPF حتى الاحتراف] {3.7} - اداة الـCanvas - بواسطة الشاكي لله - 30-06-14, 10:27 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [WPF حتى الاحتراف] - عمل واجهة (الفيديو الثاني) الشاكي لله 9 7,565 06-12-20, 04:09 AM
آخر رد: Mohammed1991
  [WPF حتى الاحتراف] {1} - إنشاء برنامجك الاول الشاكي لله 30 21,941 14-10-18, 08:34 AM
آخر رد: qadar elzaman
  [WPF حتى الاحتراف] {0} - نظرة عامة عن WPF الشاكي لله 14 11,852 14-10-18, 07:58 AM
آخر رد: qadar elzaman
  [WPF حتى الاحتراف] {4.6} - الـ Data Template و الـ Sample Data الشاكي لله 14 11,035 05-03-17, 09:47 AM
آخر رد: dabas
  [WPF حتى الاحتراف] {4.3} - الـTemplate ومقدمة عن الـTrigger الشاكي لله 8 7,023 25-01-17, 04:45 AM
آخر رد: hero2199
  [WPF حتى الاحتراف] - عمل واجهة (الفيديو الاول) الشاكي لله 5 5,259 02-12-16, 11:07 PM
آخر رد: alsef
  [WPF حتى الاحتراف] - ورشة عمل Pages Navigation (3- الانميشن) الشاكي لله 16 9,016 02-06-16, 02:53 PM
آخر رد: CLARO
  [WPF حتى الاحتراف] - ورشة عمل Pages Navigation (2- البرمحة) الشاكي لله 1 2,916 14-05-16, 11:54 PM
آخر رد: السندبااد
  [WPF حتى الاحتراف] - ورشة عمل Pages Navigation (1- التصميم) الشاكي لله 1 2,782 14-05-16, 11:27 PM
آخر رد: السندبااد
  [WPF حتى الاحتراف] {3.3} - اداة الـ Grid الشاكي لله 14 9,779 31-03-16, 11:11 PM
آخر رد: السندبااد

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم