Кодирование программы
Обычно при написании программ используются модули. Модуль – функционально законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом или поименованной непрерывной её части, предназначенный для использования в других программах. Но поскольку данная программа написана на объектно-ориентированном языке С#, понятие «модуль» в ней отсутствует. Такие программы целиком состоят из классов, которые могут находиться как в одном, так и в разных файлах, связь с которыми реализована с помощью пространств имен «namespace». Эти файлы и будем считать «модулями».
В данном случае программа состоит из следующих модулей:
«Program»;
«Form1»;
«fPageSettings»;
«my_class».
В файле «Program.cs» находится код основной программы, которая создает «оконное» WIN32-приложение.
В файле «Form1» находится главная форма программы. Также в нем находятся следующие функции:
private void b***_Paint(object sender, PaintEventArgs e) – 10 обработчиков, соответствующие 10 инструментальным кнопкам, выполняют перерисовку кнопок (отображение соответствующих фигур на соответствующих кнопках);
- private void bHp_Click(object sender, EventArgs e) – выполняет увеличение высоты выделенной фигуры, а при включенном параметре «Менять положение текста» – сдвигает ее текст вверх;
- private void bHm_Click(object sender, EventArgs e) – выполняет
уменьшение высоты выделенной фигуры, а при включенном параметре «Менять положение текста» – сдвигает ее текст вниз;
- private void bWp_Click(object sender, EventArgs e) – выполняет увеличение ширины выделенной фигуры, а при включенном параметре «Менять положение текста» – сдвигает ее текст вправо;
- private void bWm_Click(object sender, EventArgs e) – выполняет уменьшение ширины выделенной фигуры, а при включенном параметре «Менять положение текста» – сдвигает ее текст влево;
- private void tbText_TextChanged(object sender, EventArgs e) – отражает изменение текста на выделенной фигуре;
- private void miSave_Click(object sender, EventArgs e) – отображает диалог сохранения файла, при подтверждении выполняет сохранение объектов;
- private void tbFontSize_TextChanged(object sender, EventArgs e) – проверяет корректность введенных данных о размере шрифта (включает/выключает кнопку «Установить»);
- private void bSetFontSize_Click(object sender, EventArgs e) – обработка нажатия на кнопку «Установить» – установка размера шрифта фигуры;
- private void bFigureButtons_Click(object sender, EventArgs e) – обработ- чик нажатий на вышеуказанные кнопки;
- private void panel1_Paint(object sender, PaintEventArgs e) – отрисовка фигур на компоненте «Panel»;
- private void panel1_MouseClick(object sender, MouseEventArgs e) – обработка нажатий мыши на «холсте» (компонент «Panel»);
- private void miPageSettings_Click(object sender, EventArgs e) – обработка пункта меню «Файл – Параметры страницы…»;
- private void Form1_Load(object sender, EventArgs e) – обработка события «Load» главной формы;
- private void panel1_MouseMove(object sender, MouseEventArgs e) – обработка движения мыши на компоненте «Panel».
Модуль «fPageSettings.cs», содержит средства для обработки настроек страницы. При этом содержит следующие функции:
- private void cbPages_SelectionChangeCommitted(object sender, EventArgs e) – обработка «ComboBox» (при подтверждении выбора);
- private void fPageSettings_Load(object sender, EventArgs e) – обработка события «Load» формы настроек;
- private void bOK_Click(object sender, EventArgs e) – обработка нажатия кнопки «ОК»;
- private void rbDefinedSize_CheckedChanged(object sender, EventArgs e) – выполняется при активации «Предопределенный размер»;
- private void rbUserSize_CheckedChanged(object sender, EventArgs e) – выполняется при активации «Другой размер»;
- private void bRemove_Click(object sender, EventArgs e) – удаление фигуры или линии;
Модуль «my_class.cs» содержит классы, описанные в пункте 2. Опишем основные методы данных классов:
- public void Highlight(bool DoHightlight = true) – один из двух методов, выполняющих выделение фигуры цветом;
- public abstract void Draw(Graphics g) – имеет различную, в зависимости от класса, реализацию и выполняет соответствующие функции для отрисовки базовых элементов, из которых фигура состоит (линия, дуга и пр.);
- protected abstract void UpdateFigure() – внутренний для объекта метод, предназначен для обновления его координат (например, при изменении положения или размера);
- public bool Covered(int x, int y) – метод выполняет проверку координат мыши (формальные параметры х и у) и делает вывод о том, находится ли мышь над объектом или нет.
Листинг программы приведен в приложении А.
