العودة   منتدى رياض الجنة - Riad Al-Ganah > الرياض التقنية > روضة الكورسات والدورات التقنية والعلمية > روضة دورات تقنية الـ .NET بلغاتها المختلفة > دورة .NET 2008 من منتدى فيجوال بيسك للعرب

دورة .NET 2008 من منتدى فيجوال بيسك للعرب مقدم الدورة : أحمد جمال ، نوع الدورة : كتابية مصحوبة بصور ، حالة الدورة : انتهت ، عدد الدروس : 80 درس . مستوى الدورة : من البداية للاحتراف .

إضافة رد

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-04-2010, 06:14 PM
الصورة الرمزية khaledbelal
khaledbelal khaledbelal غير متواجد حالياً
مبرمج المنتدى
الادارة تكليف لا تشريف
 
تاريخ التسجيل: Oct 2009
العمر: 34
المشاركات: 3,606
افتراضي الدرس الرابع والخمسون : Gdi+ - دورة .net 2008

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

GDI+ :

تتبع هذه الأوامر الفئة System.Drawing وتوفر لك حلولاً افضل من اجل رسومات 2D على الفورم والمخططات البيانية وخلافه ، تحتوي على الفئات الرئيسية التالية :

System.Drawing : الفئة الرئيسية ، تحتوي على الأقلام والفرش الاساسية التي تستخدمها في عمليات الرسم .
System.Drawing.Drawing2D : تقدم مجموعة أخرى من الدوال التي تساعدك على الرسم مثل gradient brushes و geometric transforms .
System.Drawing.Imaging : تساعدك في عملياتك على الصور وقراءة البيانات الداخلية وتنفيذ العمليات المختلفة .
System.Drawing.Printing : تساعدك على تحويل رسومات إلى صور للطباعة والتعامل مع الطاعبة .
System.Drawing.Text : التعامل بصورة رسومية مع الخطوط وخلافه .

محتويات الفئة System.Drawing :
هي الفئة الاساسية والأكثر استخداماً ،أهم محتوياتها هي :

Bitmap : لاحتواء معلومات الصورة .
Brush : فرشاة لعملية التلوين ، ولها عدة انواع .
BufferedGraphics : يمكنك باستخدام هذا ال Buffer الرسم باستخدام تقنية double buffering ، وهي تقنية تسمح للرسم بالاكتمال في buffer مستقل ثم ظهوره للمستخدم مرة واحدة لتلافي مشكلة flicker ، على العموم هي تقنية مشهورة في تقنيات الرسم يمكن التعرف عليها من هنا :
http://msdn.microsoft.com/en-us/library/b367a457.aspx

Color
SystemColors : الألوان التي يمكن استخدامها في عمليات الرسم والتلوين .

Font
FontFamily : الخطوط التي يمكن استخدامها في عمليات رسم النصوص .

Graphics : الكائن الاساسي في عمليات الرسم ، والتي سنتعرف عليها لاحقاً .

Icon
SystemIcons : التعامل مع الايقونات .

Image : ال abstract class لكل ما يتعلق بعمليات الصور .
ImageAnimator : للتعامل مع الصور المتحركة .

Pen : قلم لعمليات الرسم ، وله عدة أنواع .
Point : للتعامل مع الاحداثيات .
Rectangle : مستطيل .
Size : حساب المساحة للشكل .
StringFormat : يحتوي هذا الكلاس على كل ما يتعلق بعمليات النصوص .
Region : خاص بالتعامل مع الاشكال أي كانت ، وله عدة خصائص مفيدة جداً .

يمكنك معرفة المزيد عن جميع محتوياتها من خلال هذا الرابط :
http://msdn.microsoft.com/en-us/libr...m.drawing.aspx

الكائن Graphics .
الكائن Graphics هو الكائن الأساسي في عملية الرسم ، يمكن انشاءه بعدة طرق :

- من الفورم ، وينطبق عليه من picture box وخلافه :
C#:
كود PHP:
Graphics myGraphic Form1.CreateGraphics(); 
vb.net:
كود PHP:
Dim myGraphic As Graphics Form1.CreateGraphics() 
- أو من حدث الرسم لأي اداة كالفوم مثلاً ، عن طريق الكائن PaintEventArgs بالشكل التالي مثلاً :
C#:
كود PHP:
       private void Form1_Paint(object senderPaintEventArgs e)
       {
           
Graphics myGraphic e.Graphics();
       } 
vb.net:
كود PHP:
Private Sub Form1_Paint(ByVal sender As ObjectByVal e As PaintEventArgs)

   
Dim myGraphic As Graphics e.Graphics() 
End Sub 
ويحتوي هذا الكائن على الأوامر التالية :

FromHdc()
FromHwnd()
FromImage() : عمل كائن رسم من صورة موجودة حالياً .
Clear() : مسح محتويات الكائن .
DrawArc() : رسم صورة او شكل هندسي .
DrawBeziers() : رسم Beziers - لا أعرف معناها ولكنها ترسم منحنيات - .
DrawCurve() : رسم منحنى .
DrawEllipse() : رسم شكل بيضاوي.
DrawIcon() : رسم ايقونة .
DrawLine() : رسم خط مستقيم .
DrawLines() : رسم مجموعة من الخطوط .
DrawPie() : رسم مخطط بياني .
DrawPath() : رسم مسار .
DrawRectangle() : رسم مستطيل .
DrawRectangles() : رسم مستطيلات .
DrawString() : رسم نص .
FillEllipse() : تلوين مضلع .
FillPie() : تلوين مخطط بياني .
FillPolygon() : تلوين شكل بيضاوي.
FillRectangle() : تلوين مربع .
FillPath() : تلوين مسار .

لمزيد من المعلومات حول هذه الفئة ودوالها :
http://msdn.microsoft.com/en-us/libr...s_members.aspx

والآن لعلك لاحظت أن جميع دوال الرسم DrawXXX تستخدم القلم Pen ، أما دوال التلوين FillXXX فهي تستخدم الفرشاة Brush ،لذا سنبدأ بالتعرف على هذين الكائنين أولاً .

Pen :
يمكن استخدام Pen في عمليات الرسم مباشرة عن طريق تحديد مثل Pen.Blue للقلم الأزرق وخلافه ، إلا أننا ما زلنا قادرين على تعريف كائن منه والاستفادة من خصائصه المتعددة بالشكل التالي مثلاً :
C#:
كود PHP:
Pen myPen = new Pen(Color.Black3); 
vb.net:
كود PHP:
Dim myPen As New Pen(Color.Black3
حيث قمنا بانشاء قلم بلون أسود وبعرض 3 .يمكننا استخدام المزيد من الخصائص للقلم عن طريق تحديد مثلاً شكل نقطة البداية :
كود PHP:
myPen.StartCap LineCap.ArrowAnchor 
لمعرفة المزيد عن خصائص القلم :
http://msdn.microsoft.com/en-us/libr...awing.pen.aspx


Brush :
بنفس الطريقة ، يمكن انشاء فرشاة باللون الأصفر كأبسط مثال بالشكل التالي :
C#:
كود PHP:
SolidBrush myBrush = new SolidBrush (Color.Yellow); 
vb.net:
كود PHP:
Dim myBrush As New SolidBrush(Color.Yellow
يمكن ايضاً انشاء فرشاة بأكثر من لون بالشكل التالي مثلاً :
C#:
كود PHP:
HatchBrush myBrush =new HatchBrush(HatchStyle.BackwardDiagonalColor.GreenColor.White); 
vb.net:
كود PHP:
Dim myBrush As New HatchBrush(HatchStyle.BackwardDiagonalColor.GreenColor.White
لمعرفة المزيد عن خصائص الفرشاة :
http://msdn.microsoft.com/en-us/libr...ing.brush.aspx


الرسم :

بعد ان انشأنا كائننا الخاص للرسم ، يمكننا البدء في رسم خط مستقيم بالشكل التالي مثلاً :
كود PHP:
myGraphic.DrawLine(Pens.Blue2020100100
أو مستطيل :
كود PHP:
myGraphic.DrawRectangle(Pens.Blue, New Rectangle(2020100100)) 
أو رسم منحنى :
كود PHP:
myGraphic.DrawBezier(Pens.Blue10205080108010050
بامكاننا رسم خط مستقيم ولكن باستخدام كائن قلم سبق تعريفه وتحديده بأنه منقط بالشكل التالي مثلاً :
C#:
كود PHP:
            Graphics myGraphic e.Graphics;
            
Pen myPen = new Pen(Color.Blue3);
            
myPen.DashStyle System.Drawing.Drawing2D.DashStyle.Dot;
            
myGraphic.DrawLine(myPen2020100100); 
vb.net:
كود PHP:
Dim myGraphic As Graphics e.Graphics 
Dim myPen 
As New Pen(Color.Blue3
myPen.DashStyle System.Drawing.Drawing2D.DashStyle.Dot 
myGraphic
.DrawLine(myPen2020100100
او لرسم مسار من عدة خطوط على شكل مثلث مثلاً :
C#:
كود PHP:
GraphicsPath myGraphicPath = new GraphicsPath(); 
    
myGraphicPath.StartFigure(); 
    
    
myPath.AddLine(10103060); 
    
myPath.AddLine(30606010); 
    
myPath.AddLine(60101010); 
    
    
myGraphicPath.CloseFigure(); 
    
    
myGraphic.DrawPath(myPenmyGraphicPath); 
vb.net:
كود PHP:
Dim myGraphicPath As New GraphicsPath()
myGraphicPath.StartFigure()
myPath.AddLine(10103060)
myPath.AddLine(30606010)
myPath.AddLine(60101010)
myGraphicPath.CloseFigure()
myGraphic.DrawPath(myPenmyGraphicPath
أو لرسمه ملوناً نغير السطر الأخير ليكون FillPath مع تمرير الفرشاة المناسبة :

رسم النصوص :

رسم النصوص هو قسم آخر من عالم ال GDI أبسط مثال عليه هو الكود التالي لرسم نص بفرشاة حمراء وبلون أحمر في النقطة 200 و 200 .
رمز:
myGraphic.DrawString("Hello GDI+", new Font("Times New Roman", 30), Brushes.Red, 200, 200);


لكن لاحقاً يكون بامكاننا استخدام الكائن StringFormat واضافته إلى متغيرات الرسم ، لكي نرسم مثلاً نصاً بصورة عمودية :
C#:
كود PHP:
Graphics myGraphic e.Graphics;
            
StringFormat drawFormat = new StringFormat();
            
drawFormat.FormatFlags StringFormatFlags.DirectionVertical;
            
myGraphic.DrawString("Hello GDI+", new Font("Times New Roman"30), Brushes.Red10020drawFormat); 
vb.net:
كود PHP:
Dim myGraphic As Graphics e.Graphics 
Dim drawFormat 
As New StringFormat() 
drawFormat.FormatFlags StringFormatFlags.DirectionVertical 
myGraphic
.DrawString("Hello GDI+", New Font("Times New Roman"30), Brushes.Red10020drawFormat
سيكون الناتج شيئاً مثل هذا :



اختم الدرس بمثال جيد ليكون تطبيقاً على دروس الرسوميات لدينا ، المثال موجود على هذا الرابط وهو لرسم ساعة بالشكل التالي :

[IMG]http://www.****2s.com/Tutorial/CSharpImages/ClockFace.PNG[/IMG]

رابط المثال :
http://www.****2s.com/Tutorial/CShar...kanimation.htm

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

إلى هنا نكون قد انتهينا من درس اليوم ، الدرس القادم سيكون في عالم WPF و XAML .

والله الموفق ..
والسلام عليكم ورحمة الله وبركاته .


توقيع : khaledbelal



(أَفَأَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا بَيَاتاً وَهُمْ نَآئِمُونَ {97} أَوَ أَمِنَ أَهْلُ الْقُرَى أَن يَأْتِيَهُمْ بَأْسُنَا ضُحًى وَهُمْ يَلْعَبُونَ {98}
أَفَأَمِنُواْ مَكْرَ اللّهِ فَلاَ يَأْمَنُ مَكْرَ اللّهِ إِلاَّ الْقَوْمُ الْخَاسِرُونَ {99}).
سورة الأعراف.

رد مع اقتباس
إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
الدرس الثامن والخمسون : Wpf 3d - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-07-2010 02:19 AM
الدرس السادس والخمسون : أدوات Wpf - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 1 03-05-2010 07:06 PM
الدرس السابع والخمسون : Wpf 2d - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 2 03-05-2010 06:57 PM
الدرس الخامس والخمسون : مقدمة إلى Wpf - دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 03-04-2010 06:28 PM
الدرس الرابع عشر : this دورة .net 2008 khaledbelal دورة .NET 2008 من منتدى فيجوال بيسك للعرب 0 02-19-2010 07:58 PM

استضافة الحياة

الساعة الآن 10:17 AM.


Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية
Ads Management Version 3.0.1 by Saeed Al-Atwi

SlamDesignzslamDesignzEdited by Riad Al-Ganah Team - جميع الحقوق محفوظة لشبكة رياض الجنة

Privacy Policy Valid XHTML 1.0 Transitional By SlamDesignz Valid CSS Transitional By SlamDesignz