Добавить в цитаты Настройки чтения

Страница 359 из 371

                }

                set

                {

                      prev = value;

                }

          }

     }//class TwoLinkable

}

Организация интерфейса

Создадим теперь интерфейс, позволяющий конечному пользователю работать с объектами наших классов. Как всегда, интерфейс создавался вручную в режиме проектирования. На форме я создал меню с большим числом команд и инструментальную панель с 18 кнопками, команды которых повторяли основную команду меню. Описывать процесс создания интерфейса не буду — он подробно рассмотрен в предыдущей главе. Поскольку вся работа по созданию интерфейса транслируется в программный код формы, то просто приведу этот достаточно длинный текст почти без всяких купюр:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentMode1;

using System.Windows.Forms;

using System.Data;

using Shapes;

namespace Final

{

     /// <summary>

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

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

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

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

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

     /// </summary>

     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);

         }

         /// <summary>

         /// Clean up any resources being used.

         /// </summary>

         protected override void Dispose(bool disposing)

         {

              if(disposing)

              {

                  if (components!= null)

                  {

                      components.Dispose ();

                   }

               }

              base.Dispose(disposing);

           }

           #region Windows Form Designer generated code

           /// <summary>

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

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

           /// </summary>

           private void InitializeComponent ()

           {

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

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

           }

           #endregion

           /// <summary>

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

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

           /// </summary>

           [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 ();