Читаем Интернет-журнал "Домашняя лаборатория", 2007 №9 полностью

using System;

using System.Drawing;

using System.Collections;

using System.ComponentMode1;

using System.Windows.Forms;

using System.Data;

using Shapes;


namespace Final

{

     ///

     /// Эта форма обеспечивает интерфейс для создания,

     /// рисования, показа, перемещения, сохранения в списке

     /// и выполнения других операций над объектами семейства

     /// геометрических фигур. Форма имеет меню и

     /// инструментальные панели.

     /// 

     public class Form1 System.Windows.Forms.Form

     {

         //fields

         Graphics graphic;

         Brush brush, clearBrush;

         Pen pen, clearPen;

         Color color;

         Figure current;

         TwoWayList listFigure;

         private System.Windows.Forms.MainMenu mainMenu1

         private System.Windows.Forms.ImageList imageList1;

         private System.Windows.Forms.ToolBar tooiBar1

         private System.Windows.Forms.MenuItem menuItem1

// аналогичные определения для других элементов меню

         private System.Windows.Forms.MenuItem menuItem35;

         private System.Windows.Forms.ToolBarButton toolBarButton1;

// аналогичные определения для других командных кнопок

         private System.Windows.Forms.ToolBarButton toolBarButton18;

         private System.ComponentMode1.IContainer components;

         public Form1()

         {

            InitializeComponent ();

            InitFields();

         }

         void InitFields()

         {

             graphic = CreateGraphics ();

             color = SystemColors.ControlText;

             brush = new SolidBrush(color);

             clearBrush = new SolidBrush(SystemColors.Control);

             pen = new Pen (color);

             clearPen = new Pen(SystemColors.Control);

             listFigure = new TwoWayList();

             current = new Person (20, 50, 50);

         }

         ///

         /// Clean up any resources being used.

         /// 

         protected override void Dispose(bool disposing)

         {

              if(disposing)

              {

                  if (components!= null)

                  {

                      components.Dispose ();

                   }

               }

              base.Dispose(disposing);

           }

           #region Windows Form Designer generated code

           ///

           /// Required method for Designer support — do not modify

           /// the contents of this method with the code editor.

           /// 

           private void InitializeComponent ()

           {

              // Код, инициализирующий компоненты и построенный

              // дизайнером, опущен

           }

           #endregion

           ///

           /// Точка входа в приложение — процедура Main,

           /// запускающая форму

           ///

           [STAThread]

           static void Main()

           {

                Application.Run(new Form1());

           }

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

           {

                createEllipse ();

           }

           void createEllipse ()

           {

                //clear old figure

                if (current!= null) current.Show(graphic, clearPen, clearBrush);

                //create ellipse

                current = new Ellipse (50, 30, 180,180);

           }

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

           {

                createCircle ();

           }

           void createCircle ()

           {

                //clear old figure

                if (current!= null) current.Show(graphic, clearPen, clearBrush);

                //create circle

                 current = new Circle (30, 180, 180);

            }

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

            {

                 createLittleCircle ();

            }

            void createLittleCircle ()

            {

                 //clear old figure

                 if (current!= null) current.Show(graphic, clearPen, clearBrush);

                 //create littlecircle

                 current = new Littlecircle (180, 180);

            }

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

            {

                 createRectangle ();

            }

            void createRectangle ()

            {

                 //clear old figure

                 if (current!= null) current.Show(graphic, clearPen, clearBrush);

                //create rectangle current = new Rect(50, 30, 180,180);

            }

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

            {

                  createSquare();

            }

            void createSquare()

            {

                  //clear old figure

                  if (current!= null) current.Show(graphic, clearPen, clearBrush);

                  //create square

                  current = new Square(30, 180,180);

            }

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

            {

                  createPerson ();

            }

            void createPerson ()

            }

                  //clear old figure

                  if (current!= null) current.Show(graphic, clearPen, clearBrush);

                  //create person

                  current = new Person (20, 180, 180);

            }

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

            {

                 showCurrent ();

            }

            void showCurrent()

            {

                 //Show current

                 current.Show(graphic, pen, brush);

            }

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

            {

                  clearCurrent ();

            }

            void clearCurrent()

            {

                  //Clear current

                  current.Show(graphic, clearPen, clearBrush)

            }

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

            {

                 incScale ();

             }

             void incScale ()

             {

                  //Increase scale

                  current.Show(graphic, clearPen, clearBrush)

                  current.Scale (1.5);

                  current.Show(graphic, pen, brush);

             }

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

             {

                  decScale ();

             }

             void decScale()

             {

                  //Decrease scale

                  current.Show(graphic, clearPen, clearBrush)

                  current.Scale(2.0/3);

                  current.Show(graphic, pen, brush);

             }

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

             {

                   moveLeft ();

             }

             void moveLeft()

             {

                  //Move left

                  current.Show(graphic, clearPen, clearBrush)

                  current.Move(-20,0);

                  current.Show(graphic, pen, brush);

              }

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

              {

                   moveRight ();

              }

              void moveRight()

              {

                    //Move right

                     current.Show(graphic, clearPen, clearBrush)

                     current.Move(20,0);

                     current.Show(graphic, pen, brush);

              }

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

              {

                    moveTop ();

              }

              void moveTop()

              {

                    //Move top

                    current.Show(graphic, clearPen, clearBrush)

                    current.Move(0,-20);

                    current.Show(graphic, pen, brush);

              }

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

              {

                    moveDown ();

              }

              void moveDown()

              {

                    //Move down

                    current.Show(graphic, clearPen, clearBrush)

                    current.Move(0, 20);

                    current.Show(graphic, pen, brush);

              }

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

              {

                    //choose color

                    ColorDialog dialog = new ColorDialog();

                    if (dialog.ShowDialog() ==DialogResult.OK) color =dialog.Color;

                    pen = new Pen (color); brush = new SolidBrush(color);

              }

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

              {

                    //Red color

                    color =Color.Red;

                    pen = new Pen(color); brush = new SolidBrush(color);

              }

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

              {

                    //Green color

                    color =Color.Green;

                    pen = new Pen(color); brush = new SolidBrush(color);

              }

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

              {

                    //Blue color

                    color =Color.Blue;

                    pen = new Pen(color); brush = new SolidBrush(color);

              }

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

              {

                    //Black color

                    color =Color.Black;

                    pen = new Pen (color); brush = new SolidBrush(color);

              }

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

              {

                    //Gold color

                    color =Color.Gold;

                    pen = new Pen(color); brush = new SolidBrush(color);

              }

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

              {

                    //put_left: добавление фигуры в список

                    listFigure.put_left(current);

              }

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

              {

                    //put_right: добавление фигуры в список

                    listFigure.put_right(current);

              }

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

              {

                   //remove: удаление фигуры из списка

                   if(!listFigure.empty()) listFigure.remove ();

              }

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

              {

                    goPrev();

              }

              void goPrev()

              {

                    //go_prev: передвинуть курсор влево

                    if(!(listFigure.Index == 1))

                    {

                         listFigure.go_prev();

                         current = listFigure.item();

                     }

               }

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

               {

                      goNext();

               }

               void goNext()

               {

                     //go_next: передвинуть курсор вправо

                     if(!(listFigure.Index == listFigure.Count))

                     {

                          listFigure.go_next();

                          current = listFigure.item();

                     }

               }

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

               {

                     //go_first

                     listFigure.start();

                     if(!listFigure.empty())

                           current = listFigure.item();

               }

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

               {

                     //go_last

                     listFigure.finish();

                     if(!listFigure.empty())

                           current = listFigure.item();

                }

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

                {

                     showList ();

                }

                void showList ()

                {

                     //Show List

                     listFigure.start();

                     while(listFigure.Index <= listFigure.Count)

                     {

                           current = listFigure.item();

                           current.Show(graphic,pen,brush);

                           listFigure.go_next();

                     }

                     listFigure.finish ();

                }

                private void menuItem16_Click(object sender,

                     System.EventArgs e)

                {

                     clearList ();

                }

                void clearList ()

                {

                     //Clear List

                     listFigure.start();

                     while(!listFigure.empty())

                     {

                          current = listFigure.item();

                          current.Show(graphic,clearPen,clearBrush);

                          listFigure.remove ();

                     }

                }

                private void Form1_MouseMove (object sender,

                     System.Windows.Forms.MouseEventArgs e)

                {

                     if((current!= null) && current.dragged_figure)

                     {

                          current.Show(graphic,clearPen,clearBrush);

                          Point pt = new Point(e.X, e.Y);

                          current.center_figure = pt;

                          current.Show(graphic,pen,brush);

                     }

                }

                private void Form1_MouseUp(object sender,

                     System.Windows.Forms.MouseEventArgs e)

                {

                     current.dragged_figure = false;

                }

                private void Form1_MouseDown(object sender,

                     System.Windows.Forms.MouseEventArgs e)

                {

                     Point mousePoint = new Point (e.X, e.Y);

                     Rectangle figureRect = current.Region_Capture();

                     if ((current!= null) &&

                        (figureRect.Contains(mousePoint)))

                        current.dragged_figure = true;

                }

                protected override void

                     OnPaint(System.Windows.Forms.PaintEventArgs e)

                {

                     //show current figure

                      current.Show(graphic, pen, brush);

                }

                private void toolBar1_ButtonClick(object sender,

                      System.Windows.Forms.ToolBarButtonClickEventArgs e)

                {

                      int buttonNumber =

                          toolBar1.Buttons.IndexOf(e.Button);

                      switch (buttonNumber)

                      {

                           case 0:

                                 createEllipse (); break;

                           case 1:

                                 createCircle(); break;

                           case 2:

                                 createLittleCircle(); break;

                           case 3:

                                 createRectangle(); break;

                           case 4:

                                 createSquare(); break;

                           case 5:

                                 createPerson (); break;

                           case 6:

                                 showCurrent (); break;

                           case 7:

                                 clearCurrent (); break;

                           case 8:

                                 showList (); break;

                           case 9:

                                 clearList (); break;

                           case 10:

                                 incScale (); break;

                           case 11:

                                 decScale (); break;

                           case 12:

                                 moveLeft (); break;

                           case 13:

                                 moveRight (); break;

                           case 14:

                                 moveTop (); break;

                           case 15:

                                 moveDown (); break;

                           case 16:

                                 goNext(); break;

                           case 17:

                                 goPrev (); break;

                     }

              }

      }

}

Перейти на страницу:

Похожие книги