Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка С#.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
830 Кб
Скачать
☆

Рекомендации по выполнению задания

Пункт 1

Проектирование классов эллипса и прямой линии может быть выполнено аналогично проектированию класса прямоугольника.

Класс линии произвольной формы для хранения множества точек, задающих линию, может использовать динамический массив. Следует учитывать, что методу DrawCurve должен передаваться обычный массив точек, а не динамический массив. Для рисования кривой можно формировать на основе информации из динамического массива буферный массив, координаты точек которого будут учитывать текущее положение полос прокрутки.

Пункт 2

Для управления фигурами разных типов рекомендуется определить перечисление, содержащее идентификаторы этих фигур. Выбор пункта меню, соответствующего определённой фигуре, и состояние флага заливки должны фиксироваться в полях класса основной формы. Затем, при обработке щелчка левой кнопки мыши следует учитывать значение этих параметров и создавать одну из фигур, используя для выбора конструкцию switch–case.

Пункт 3

Для формы, содержащей рисунок, установить в true свойство DoubleBuffered. Для буферизации операций рисования добавить в класс формы, содержащей рисунок, поле типа BufferedGraphics. Это поле не должно инициализироваться в конструкторе класса, так как его инициализация требует наличия объекта Graphics, который должен создаваться лишь для уже существующих и инициализированных окон. Решением проблемы является использование для инициализации этого поля обработчика события Load формы. Это событие генерируется уже после создания формы, но перед её первым отображением. Для освобождения ресурсов, занятых этим объектом, может использоваться обработчик события FormClosed. При создании объекта BufferedGraphics можно заполнить область окна цветом фона. Обработчик события Paint после перехода к буферизованному выводу должен заполнять фон рабочей области рисунка и рисовать фигуры, но не в окне, а в буфере, а затем вызовом метода Render переносить сформированный рисунок в окно.

Примеры использования класса BufferedGraphics можно найти в справочной системе Visual Studio. В разделе «Index» перейдите к справке по double buffering и там по ссылке «Manually Render Buffered Graphics».

Исключение дефектов изображения, возникающих в процессе рисования, потребует переработки алгоритмов обработки событий, приходящих от мыши. При перемещении контура фигуры вместо стирания контура в предыдущем положении теперь следует вызывать метод Render, который будет восстанавливать исходное состояние рисунка, и после этого обновлять контур.

Литература

  1. К. Ватсон и др. C#.. – СПб.:Питер, 2006.

  2. Д.С. Платт. Знакомство с Microsoft .NET / Пер. с англ. –М.: Издательско-торговый дом «Русская редакция», 2001.

  3. Ч. Петцольд. Программирование для Microsoft Windows на C#. В 2-х томах / Пер. с англ. –М.: Издательско-торговый дом «Русская редакция», 2002.

  4. C#. Программирование на языке высокого уровня / Т.А.Павловская. – СПб.:Питер, 2007.

Приложение Класс Form

Представляет окно или диалоговое окно, которое составляет пользовательский интерфейс приложения.

Базовый класс: ContainerControl

Пространство имен: System.Windows.Forms

Form является представлением любого окна, отображаемого в приложении. Класс Form используется для создания стандартных окон, окон инструментов, не обрамленных и перемещаемых окон. Класс Form также используется для создания модальных окон, например, диалогового окна. Особым видом формы является форма многодокументного интерфейса MDI (multiple document interface), содержащая другие формы, называемые дочерними MDI-формами. MDI-форма создается с помощью установки свойству IsMdiContainer значения true. Дочерние MDI-формы создаются с помощью установки свойства MdiParent для родительской MDI-формы, которая будет содержать дочернюю форму.

С помощью свойств, доступных в классе Form, имеется возможность определить внешний вид, размер, цвет и компоненты управления создаваемого окна или диалогового окна. Свойство Text позволяет задавать заголовок окна в строке заголовка. С помощью свойств Size и DesktopLocation определяются размер и положение окна при его отображении. Имеется возможность использовать свойство цвета ForeColor для изменения назначенного по умолчанию цвета фона всех элементов управления, помещенных в форму. Свойства FormBorderStyle, MinimizeBox и MaximizeBox позволяют управлять возможностью минимизации, максимизации или изменения размера формы во время выполнения.

Кроме свойств для управления формой используются методы класса. Например, метод ShowDialog используется для отображения формы как модального диалогового окна. Имеет возможность использовать метод SetDesktopLocation для размещения формы на рабочем столе.

События класса Form позволяют отвечать на действия, выполненные с формой. Имеется возможность использовать событие Activated для выполнения таких операций, как обновление данных, отображаемых в элементах управления формы при ее активации.

Форма используется в качестве начального класса приложения с помощью помещения в класс метода, вызванного Main В методе Main необходимо добавить код для создания и отображения формы. Необходимо также добавить атрибут [STAThread] для метода Main для запуска формы. Если начальная форма закрыта, приложение также закрыто.