www.doronamir.com

E-mail: doron@doronamir.com

 

 

 

 GDI+: אובייקט Graphics

אובייקט מטיפוס Graphics הינו המשטח הגרפי המייצג את משטח הציור על הפקד בו אנו מעוניינים לצייר , אובייקט זה מועבר למתודה OnPaint של הפקד שבו אנו מעוניינים לערוך את המשטח הגרפי . אם לאובייקט יש מתודה OnPaint אנו נבצע דריסה ע"י Override .

 

אובייקט מסוג PaintEventArgs  הינו אובייקט המציין אוסף ארגומנטים הנשלחים למתודה OnPaint בינהם האובייקט Graphics

 

בתכנית הנ"ל נצייר מעגל בצבע אדום אל אובייקט הטופס:

 

 

 

כדי ליצור מעגל פשוט זה יש תחילה לבנות מחלקה היורשת ממחלקת הטפסים בכך אנו יורשים תכונות טופס ישירות אל המחלקה החדשה

בנוסף לירושה נבנה Constructor המאפשר לנו לעצב את הטופס ע"י קריאה למתודה InitializeComponent (שים לב כי כאשר אנו מעצבים מחלקה שיורשת ממחלקת ה Form ניתן לקבל באופן אוטומטי את פונקציית InitializeComponent כולל אתחול מאפייני הטופס.

 

הפעולה העיקרית היא דריסת המתודה OnPaint מתודה זו נקראת ע"י המערכת כאשר יש לצבוע או לצייר על גבי פקד (חידוש)

אובייקט מסוג Color הינו ייצוג עבור צבע לפי RGB-A (Alpha\Red\Green\Blue)

אובייקט מסוג Brush מייצג מברשת מילוי , Brush הינה מחלקה מופשטת (אבסטרקטית – לא ניתן לייצר ממנה אובייקט ) לכן הטיפוס עצמו

נוצר ממחלקות  הנגזרות ממחלקה זו כגון :

 

1.      SolidBrush – גוון אחיד

2.      TextureBrush – מילוי צורה גרפית ע"י תמונה

3.      HatchBrush – מילוי בתבניות

4.      LinearGradientBrush – מילוי ע"י מעברי צבע שונים

5.      PathGradientBrush- מילוי ע"י מעברי צבע שונים מנקודה מסויימת

 

using System;//טיפוסים סטנדרטים

using System.Drawing;// טיפוסי גרפיקה

using System.Windows.Forms;// טיפוס טופס

 

namespace DoronAmir//מרחב השמות

{

    public class MyForm:Form // יצירת מחלקה היורשת ממחלקת הטפסים

    {

        public MyForm() //Constructor

        {

        InitializeComponent(); // Call InitializeComponent

        }

        private void InitializeComponent()//אתחול מאפייני הטופס

        {

            this.ClientSize = new System.Drawing.Size(500, 100);//רוחב+גובה

             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;

            this.Name = "MyForm";

            this.Text = "www.doronamir.com";

//הצבעה לשיגרת טיפול באירוע

            this.Load += new System.EventHandler(this.MyForm_Load);

        }

 

override protected void OnPaint(PaintEventArgs e)

        {

            Brush MyBrush = new SolidBrush(Color.Red);//יצירת מברשת מילוי אחיד

            e.Graphics.FillEllipse(MyBrush,0,0,50,50);//מילוי אליפסה החסומה בריבוע

        }

 

        private void MyForm_Load(object sender, System.EventArgs e)

        {

       

        }

    }

//המחלקה הראשית הכוללת את המתודה הראשית

    class GDI_1

    {

        public static void Main()

        {//טעינת אובייקט הטופס לזיכרון והרצתו כיישום

            Application.Run(new MyForm());

        }

    }

}