Студопедия  
Главная страница | Контакты | Случайная страница

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

Лабораторная работа №6

Читайте также:
  1. I. ЧТО ЕСТЬ ДИПЛОМНАЯ РАБОТА И ЗАЧЕМ ОНА
  2. I. ЧТО ЕСТЬ ДИПЛОМНАЯ РАБОТА И ЗАЧЕМ ОНА
  3. I. ЧТО ЕСТЬ ДИПЛОМНАЯ РАБОТА И ЗАЧЕМ ОНА
  4. I.3. Чем дипломная работа может пригодиться после университета
  5. II. САМОСТОЯТЕЛЬНАЯ РАБОТА
  6. III. Лабораторная диагностика гепатита С
  7. III.2.1. Как работать в библиотеке
  8. IV. Лабораторная диагностика гепатита В
  9. IV. РАБОТА С УЧАЩИМИСЯ ШКОЛЫ.
  10. KOHTPОЛЬНАЯ РАБОТА № 2

Тема: Работа с графикой. Поверхность рисования. Построение диаграмм.

Цель: привить навыки работы с инструментами рисования.

Материалы и оборудование: Visual Studio.NET 2008/2010

1. Повторить теоретический материал по данной теме.

2. Разобрать пример разработки программы

Пример: Создать программу Диаграмма, которая отображает диаграмму изменения курса доллара (данные должны загружаться из файла).

Окно приложения Диаграммы

Решение: Программа демонстрирует использование методов DrawString, DrawREctangle, FillRectangle, а также работу с массивами и чтение из файла.

Модуль формы программы Диаграмма

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 Diagram

{

public partial class Form1: Form

{

// данные

private double[] d;

// строит график

private void drawDiagram(object sender, PaintEventArgs e)

{

// графическая поверхность

Graphics g = e.Graphics;

// шрифт подписей данных

Font dFont = new Font("Tahoma", 9);

// ** заголовок **

// шрифт заголовка

Font hFont = new Font("Tahoma", 14, FontStyle.Regular);

string header = "Изменение курса доллара";

// ширина области отображения текста

int wh = (int)g.MeasureString(header, hFont).Width;

int x = (this.ClientSize.Width - wh) / 2;

g.DrawString(header,

hFont, System.Drawing.Brushes.DarkGreen, x, 5);

/*

* область построения графика:

* - отступ сверху - 100;

* - отступ снизу - 20;

*

* - отступ слева - 20;

* - отступ справа - 20.

*

* ClientSize - размер внутренней области окна

*

* график строим в отклонениях от минимального

* значения ряда данных, так, чтобы он занимал

* всю область построения

*/

 

double max = d[0]; // максимальный эл-т массива

double min = d[0]; // минимальный эл-т массива

for (int i = 1; i < d.Length; i++)

{

if (d[i] > max) max = d[i];

if (d[i] < min) min = d[i];

}

// рисуем диаграму

int x1, y1; // координаты левого верхнего угла столбика

int w, h; // размер столбца

// ширина столбиков диаграммы

// 5 - расстояние между столбиками

// d.Length - кол-во рядов данных (столбиков)

w = (ClientSize.Width - 40 - 5 * (d.Length - 1)) / d.Length;

x1 = 20;

for (int i = 0; i < d.Length; i++)

{

y1 = this.ClientSize.Height - 20 -

(int)((this.ClientSize.Height - 100) *

(d[i] - min) / (max - min));

// подпись численного значения первой точки

g.DrawString(Convert.ToString(d[i]),

dFont, System.Drawing.Brushes.Black,

x1, y1 - 20);

// рисуем столбик

h = ClientSize.Height - y1 - 20 + 1;

// зеленый прямоугольник

g.FillRectangle(Brushes.ForestGreen, x1, y1, w, h);

// контур прямоугольника

g.DrawRectangle(System.Drawing.Pens.Black,

x1, y1, w, h);

x1 = x1 + w +5;

} }

public Form1()

{

InitializeComponent();

 

// чтение данных из файла в массив

System.IO.StreamReader sr; // поток для чтения

try

{

// создаем поток для чтения

// Application.StartupPath возвращает путь

// к каталогу, из которого была запущена программа

sr = new System.IO.StreamReader(

Application.StartupPath + "\\usd.dat");

// cоздаем массив

d = new double[10];

// читаем данные из файла

int i = 0;

string t = sr.ReadLine();

while ((t!= null) && (i < d.Length))

{

// записываем считанное число в массив

d[i++] = Convert.ToDouble(t);

t = sr.ReadLine();

}

 

// закрываем поток

sr.Close();

// задаем функцию обработки события Paint

this.Paint += new PaintEventHandler(drawDiagram);

}

// обработка исключений:

// - файл данных не найден

catch (System.IO.FileNotFoundException ex)

{ MessageBox.Show(ex.Message + "\n" +

"("+ ex.GetType().ToString() +")",

"График",

MessageBoxButtons.OK,

MessageBoxIcon.Error);

}

// - другие исключения

catch (Exception ex)

{

MessageBox.Show(ex.ToString(), "",

MessageBoxButtons.OK,MessageBoxIcon.Stop);

} }

private void Form1_SizeChanged(object sender, EventArgs e)

{

this.Refresh();

} }}

3. Задания для самостоятельного выполнения:

1) Напишите программу, в окне которой отображается график изменения температуры воздуха за месяц. Предполагается, что возможны как положительные, так и отрицательные значения температуры.

2) Напишите программу, в окне которой отображается столбчатая диаграмма изменения температуры воздуха за месяц. Положительные температуры оторажать красными столбиками, а отрицательные – синими.

3) Напишите программу, в окне которой отображается график изменения цены бензина (92, 95, 98) за последние шесть месяцев.

4) Напишите программу, в окне которой отображается график изменения цены бензина одной марки (например, 95) у разных операторов (Казахойл,Sinooil,) за последние шесть месяцев.

 




Дата добавления: 2015-09-10; просмотров: 33 | Поможем написать вашу работу | Нарушение авторских прав

Листинг 1.1. Модуль формы программы Милли-километры. | Листинг 1.4. Модуль формы программы Фото | Модуль формы программы Жалюзи | Лабораторная работа №4 | Модуль формы программы | Разобрать пример разработки программы | Відгук осіб, які перевіряли проходження практики |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав