Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Освоение приемов работы с окнами приложения и манипуляции ими.

Читайте также:
  1. III. Требования безопасности во время работы
  2. III.Обсуждение работы Студенческого совета транспортной отрасли при Министерстве транспорта Российской Федерации.
  3. IV Структура и организация работы органов студенческого самоуправления
  4. IV. Регламент работы жюри
  5. IX. Расписание работы Форума
  6. S1. ДЛИТЕЛЬНЫЙ (ПРОДОЛЖИТЕЛЬНЫЙ) РЕЖИМ РАБОТЫ
  7. V. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации но итогам освоения дисциплины и учебно-методическое обеспечение самостоятельной работы студентов

Разработка приложения с многодокументным интерфейсом.

по дисциплине «Технология программирования»

 

 

Выполнил:

студент группы ИВТ 1104

Смольянинов Максим Сергеевич

Проверил:

Удалов Алексей Владимирович

 

Тверь, 2013

 

Задание на лабораторную работу.

 

На основе созданного в предыдущей лабораторной работе редактора геометрических фигур разработать его многодокументную версию.

 

Для этого необходимо выполнить следующее:

1. Настроить созданное ранее приложение для редактирования геометрических фигур как дочернее окно.

2. Разработать родительскую форму многодокументного редактора фигур обеспечивающего следующие возможности:

· Скрывать локальные меню дочерних окон и управлять процессом редактировании с помощью меню родительской формы;

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

· Сохранять созданные в дочерних окнах множества фигур в файл с возможностью их воспроизведения;

 

 

Описание приложения

 

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

Интерфейс приложения является многодокументным, что подразумевает наличие главного окна и некоторого множества подчиненных ему окон. В меню главного окна реализованы возможности по изменению положения дочерних окон, а также их просмотра в виде списка.

 

 

 

 

Добавленные функции в форму с многоугольниками:

 

//Сохраняем в.bmp

private void button8_Click(object sender, EventArgs e)

{

Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Graphics g = Graphics.FromImage(b);

g.CopyFromScreen(pictureBox1.PointToScreen(new Point(0, 0)), new Point(0, 0), pictureBox1.Size);

SaveFileDialog sfd = new SaveFileDialog();

sfd.DefaultExt = "bmp";

 

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

b.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);

}

 

}

 

 

private void button9_Click(object sender, EventArgs e)

{

//Сохраняем в.dat

SaveFileDialog sfd = new SaveFileDialog();

sfd.DefaultExt = "dat";

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

SaveFigures(sfd.FileName, Figures);

 

 

}

private void SaveFigures(string filePath, List<Figure> figures)

{

FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write);

BinaryWriter br = new BinaryWriter(stream);

br.Write(figures.Count);

for (int i = 0; i < figures.Count; i++)

WriteFigure(br, figures[i]);

br.Close();

stream.Close();

 

}

 

private void WriteFigure(BinaryWriter br, Figure figure)

{

Pen borderPen = figure.GetBorderPen();

br.Write((int)borderPen.Width);

br.Write(borderPen.Color.R);

br.Write(borderPen.Color.G);

br.Write(borderPen.Color.B);

 

SolidBrush brush = figure.GetFigureBrush();

br.Write(brush.Color.R);

br.Write(brush.Color.G);

br.Write(brush.Color.B);

 

int numberOfPoints = figure.Count();

br.Write(numberOfPoints);

for (int i = 0; i < numberOfPoints; i++)

{

Point p = figure.GetPoint(i);

br.Write(p.X);

br.Write(p.Y);

}

}

 

private void button10_Click(object sender, EventArgs e)

{

OpenFileDialog od = new OpenFileDialog();

od.Filter = "*.dat|";

if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)

OpenFigures(od.FileName);

 

}

private void OpenFigures(string filePath)

{

if (filePath.IndexOf(".dat")!= -1)

{

FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(stream);

int numOfFigures = br.ReadInt32();

for (int i = 0; i < numOfFigures; i++)

Figures.Add(ReadFigure(br));

br.Close();

stream.Close();

 

}

}

 

private Figure ReadFigure(BinaryReader br)

{

float penWidth = br.ReadInt32();

Byte R = br.ReadByte();

Byte G = br.ReadByte();

Byte B = br.ReadByte();

Pen pen = new Pen(Color.FromArgb(R, G, B), penWidth);

 

R = br.ReadByte();

G = br.ReadByte();

B = br.ReadByte();

SolidBrush brush = new SolidBrush(Color.FromArgb(R, G, B));

 

List<Point> points = new List<Point>();

int numOfPoints = br.ReadInt32();

for (int i = 0; i < numOfPoints; i++)

{

int x = br.ReadInt32();

int y = br.ReadInt32();

points.Add(new Point(x, y));

}

return new Figure(points, pen, brush);

}

Form3.cs:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsFormsApplication2

{

public partial class Form3: Form

{

public Form3()

{

InitializeComponent();

this.IsMdiContainer = true;

this.menuStrip1.MdiWindowListItem = окноToolStripMenuItem;

 

}

 

private void каскадомToolStripMenuItem_Click(object sender, EventArgs e)

{

LayoutMdi(MdiLayout.Cascade);

}

 

private void вертикальноToolStripMenuItem_Click(object sender, EventArgs e)

{

LayoutMdi(MdiLayout.TileVertical);

}

 

private void горизонтальноToolStripMenuItem_Click(object sender, EventArgs e)

{

LayoutMdi(MdiLayout.TileHorizontal);

}

 

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

 

private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

{

 

}

 

private void окноToolStripMenuItem_Click(object sender, EventArgs e)

{

 

}

 

private void создатьToolStripMenuItem_Click(object sender, EventArgs e)

{

// Создать новое дочернее окно.

Form1 newChild = new Form1();

// Установить родительскую форму для дочернего окна.

newChild.MdiParent = this;

// Отобразить новую форму.

newChild.Show();

 

}

Внешний вид приложения:


Дата добавления: 2015-08-10; просмотров: 66 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Расчет стержня АD.| Інструкція з охорони праці.

mybiblioteka.su - 2015-2024 год. (0.015 сек.)