www.doronamir.com

E-mail: doron@doronamir.com

 

 

 

 GDI+:

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

התכנית בנוייה באופן מודולרי ומיועדת לשידרוג בתוכניות הבאות ,תחילה נבנה מחלקה המייצגת את הריבוע כולל מאפיינים ומתודות

הטיפוס  System.IntPtr  מאפשר  לנו להצביע אל האובייקט בו אנו רוצים לצייר את הריבוע במקרה זה האובייקט הינו   1 pictureBox ,

 במחלקת הSquaer  ישנה מתודה Show שתפקידה לקבל את הארגומנט המציין את האובייקט

אליו, הריבוע המורכב משני ריבועים אחד עבור המסגרת האדומה והשני עבור הרקע הכחול

כאשר אנו מזזים את הריבוע למעשה אנו מבצעים מחיקה וציור מחדש במיקום החדש , המחיקה מתבצעת ע"י ציור ריבוע שחור על הריבוע הקיים

המתודה Hide מבצעת את המחיקה , המתודות Up RightSide-  LeftSide-  Down מבצעות צביעה מחדש של הריבוע במיקום החדש.

 

 

 

 

 

 

קוד המחלקה Square

 

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

לכל המשתנים יש מאפיינים המאפשרים גישה , בנוסף למאפיינים יש מתודת Constructor עבור

קבלת הארגומנטים עבור אתחול מידת הריבוע והצבעים , ישנן גם מתודת Show ו Hide להצגתו של הריבוע במיקום החדש והסתרתו

using System;

using System.Drawing;

using System.Drawing.Drawing2D;

 

namespace DoronAmirGDI_1

{

    public class Square

    {

        private Point sqrLocation;

        private Size sqrSzie;

        private Color ForGroundColor;

        private Color BkGroundColor;

 

        public Square(Size iSize, Color iBackColor, Color iForeColor)

        {

            Size = iSize;

            BackColor = iBackColor;

            ForeColor = iForeColor;

        }

        public Point Location

        {

            get { return sqrLocation; }

            set { sqrLocation = value;  }

        }

 

        public Size Size

        {

            get { return sqrSzie; }

            set { sqrSzie = value;  }

        }

 

        public Color ForeColor

        {

            get { return ForGroundColor;    }

            set { ForGroundColor = value; }

        }

 

        public Color BackColor

        {

            get { return BkGroundColor; }

            set { BkGroundColor = value; }

        }

 

שרטוט הריבוע ע"י שני ריבועים//

        public void Show(System.IntPtr winHandle)

        {

Graphics GameArea;

GameArea = Graphics.FromHwnd(winHandle);

GameArea.FillRectangle(new SolidBrush(ForeColor), Location.X, Location.Y, Size.Width, Size.Height);

GameArea.FillRectangle(new SolidBrush(BackColor), Location.X + 1, Location.Y + 1, Size.Width - 2, Size.Height - 2);

        }

הסתרת הריבוע ע"י צביעתו בשחור//

        public void Hide(System.IntPtr winHandle)

        {

            Graphics GameArea;

            Rectangle CleanerSqr;

            GameArea = Graphics.FromHwnd(winHandle);

             CleanerSqr = new Rectangle(Location.X, Location.Y, Size.Width, Size.Height);

            GameArea.FillRectangle(new SolidBrush(Color.Black), CleanerSqr);

        }

 

       

    }

}

 

 

                                                                    קוד הטופס

 

private Square sqr1;

        private Size sqrSize;

//שליחת הארגומנטים לבניית הריבוע

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

        {

            sqrSize= new Size(20,20);

            sqr1 = new Square(sqrSize,Color.Blue,Color.Red);

            sqr1.Show(pictureBox1.Handle);

            btnDown.Enabled=true; //הפעלת פקדי ההזזה לאחר הופעת הריבוע

            btnUp.Enabled=true;

            BtnLeft.Enabled=true;

            btnRight.Enabled=true;

        }

 

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

        {

            sqr1.Hide(pictureBox1.Handle);

        }

 

        public void Down()

        {

//צביעת הריבוע הישן בשחור

                sqr1.Hide(pictureBox1.Handle);

//עדכון מיקום הריבוע החדש

                  sqr1.Location = new Point(sqr1.Location.X, sqr1.Location.Y +sqrSize.Height);

//ציור הריבוע במיקום החדש לאחר עדכון המיקום            

sqr1.Show(pictureBox1.Handle);

        }

 

        public void Up()

        {

            sqr1.Hide(pictureBox1.Handle);

             sqr1.Location = new Point(sqr1.Location.X, sqr1.Location.Y -sqrSize.Height);

            sqr1.Show(pictureBox1.Handle);

        }

        public void RightSide()

        {

            sqr1.Hide(pictureBox1.Handle);

             sqr1.Location = new Point(sqr1.Location.X+sqrSize.Width, sqr1.Location.Y);

            sqr1.Show(pictureBox1.Handle);

        }

 

        public void LeftSide()

        {

            sqr1.Hide(pictureBox1.Handle);

            sqr1.Location = new Point(sqr1.Location.X-sqrSize.Width, sqr1.Location.Y);

            sqr1.Show(pictureBox1.Handle);

        }

 

   

 

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

         {

             Up();

         }

 

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

         {

             RightSide();

         }

 

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

         {

             LeftSide();

         }

 

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

         {

         Down();

         }