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

2.2.2Контрольный пример

2.3Постановка задачи №3

Рисуем график

2.3.1Листинг программы:

namespace График

{

public partial class Form1 : Form

{

String[] Months;

int[] Sales;

Graphics Графика;

Bitmap Растр;

int ОтступСлева, ОтступСправа, ОтступСнизу, ОтступСверху;

int ДлинаВертОси, ДлинаГоризОси, YГоризОси, Xmax, XНачЭпюры;

Double ГоризШаг;

int ВертШаг;

int i;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

Months = new String[] {"Янв", "Фев", "Март", "Апр", "Май",

"Июнь", "Июль", "Авг", "Сент",

"Окт", "Нояб", "Дек"};

Sales = new int[] {1000, 655, 555, 480, 410, 350, 260, 150};

ОтступСлева = 35; ОтступСправа = 15;

ОтступСнизу = 20; ОтступСверху = 10;

this.Text = " Построение графика ";

button1.Text = "Нарисовать график";

this.ClientSize = new Size(593, 319);

pictureBox1.Size = new Size(569, 242);

Растр = new Bitmap(pictureBox1.Width, pictureBox1.Height, pictureBox1.CreateGraphics());

YГоризОси = pictureBox1.Height - ОтступСнизу;

Xmax = pictureBox1.Width - ОтступСправа;

ДлинаГоризОси = pictureBox1.Width -

(ОтступСлева + ОтступСправа);

ДлинаВертОси = YГоризОси - ОтступСверху;

ГоризШаг = Convert.ToDouble(ДлинаГоризОси / Sales.Length);

ВертШаг = Convert.ToInt32(ДлинаВертОси / 10);

XНачЭпюры = ОтступСлева + 30;

}

private void button1_Click(object sender, EventArgs e)

{

Графика = Graphics.FromImage(Растр);

РисуемОси();

РисуемГоризЛинии();

РисуемВертЛинии();

РисованиеЭпюры();

pictureBox1.Image = Растр;

Графика.Dispose();

}

void РисуемОси()

{

var Перо = new Pen(Color.Black, 2);

Графика.DrawLine(Перо, ОтступСлева, YГоризОси,

ОтступСлева, ОтступСверху);

Графика.DrawLine(Перо, ОтступСлева, YГоризОси,

Xmax, YГоризОси);

var Шрифт = new Font("Arial", 8);

for (this.i = 1; i <= 10; i++)

{

int Y = YГоризОси - i * ВертШаг;

Графика.DrawLine(Перо, ОтступСлева - 4, Y, ОтступСлева, Y);

Графика.DrawString((i * 100).ToString(), Шрифт,

Brushes.Black, 0, Y - 5);

}

for (this.i = 0; i <= Months.Length - 1; i++)

{

Графика.DrawString(Months[i], Шрифт, Brushes.Black,

(int)(ОтступСлева + 18 + i * ГоризШаг), (YГоризОси + 4));

}

}

void РисуемГоризЛинии()

{

var ТонкоеПеро = new Pen(Color.LightGray, 1);

for (this.i = 1; i <= 10; i++)

{

int Y = YГоризОси - ВертШаг * i;

Графика.DrawLine(ТонкоеПеро, ОтступСлева + 3, Y, Xmax, Y);

}

ТонкоеПеро.Dispose();

}

void РисуемВертЛинии()

{

var ТонкоеПеро = new Pen(Color.Bisque, 1);

for (this.i = 0; i <= Months.Length - 1; i++)

{

int X = XНачЭпюры + Convert.ToInt32(ГоризШаг * i);

Графика.DrawLine(ТонкоеПеро, X, ОтступСверху, X, YГоризОси - 4);

}

ТонкоеПеро.Dispose();

}

void РисованиеЭпюры()

{

var ВертМасштаб = Convert.ToDouble(ДлинаВертОси / 1000.0);

var Y = new int[Sales.Length];

var X = new int[Sales.Length];

for (this.i = 0; i <= Sales.Length - 1; i++)

{

Y[i] = YГоризОси - Convert.ToInt32(Sales[i] * ВертМасштаб);

X[i] = XНачЭпюры + Convert.ToInt32(ГоризШаг *i );

}

var Перо = new Pen(Color.Blue, 3);

Графика.DrawEllipse(Перо, X[0] - 2, Y[0] - 2, 4, 4);

for (this.i = 0; i <= Sales.Length - 2; i++)

{

Графика.DrawLine(Перо, X[i], Y[i], X[i + 1], Y[i + 1]);

Графика.DrawEllipse(Перо, X[i + 1] - 2, Y[i + 1] - 2, 4, 4);

}

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]