Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / ЛК / Лекция 16Граф.doc
Скачиваний:
176
Добавлен:
10.06.2015
Размер:
996.35 Кб
Скачать

Методы заливки

В C# определены методы заливки фигур. Все методы перегружаемые, то есть выполняются по-разному с разными аргументами.

В примерах заливка разных фигур осуществляется простой кистью с Brush.Cyan и кистью HatchBrush с разными стилями заливки DashStyle.

FillRectangle.

Закрашивает прямоугольник. Синтаксис метода:

g.FillRectangle (brush, p);

Здесь:

  • g – где рисуем,

  • FillRectangle – метод рисования залитого прямоугольника

  • brush – кисть,

  • p – массив точек.

Получаемый результат зависит от стиля заливки. Рисунок слева использована простая кисть с цветом Cyan. Справа использована кисть, у которой стиль заливки BacwardDiagonal (обратная диагональ), цвет переднего плана черный, фона белый.

FillEllipse.

Закрашивает эллипс. Синтаксис метода:

g.FillEllipse(brush,rect);

Здесь

  • g – где рисуем,

  • FillEllipse – метод рисования залитого эллипса,

  • brush – кисть,

  • rect – прямоугольная область, в которую вписывается эллипс/

Получаемый результат зависит от стиля заливки. Рисунок слева использована простая кисть с цветом Cyan. Справа использована кисть, у которой стиль заливки DiagonalCross (диагональная сетка), цвет переднего плана черный, фона белый.

Рисование с помощью примитивов

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 WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

// обработчик события рисования на форме

private void Form1_Paint(object sender, PaintEventArgs e)

{

using (Graphics g = e.Graphics) //Создание объекта типа График

{

using (Pen pen = new Pen(Color.Red)) //цвет карандаша

g.DrawLine(pen,0,0,200,100); //рисование линии

using (Pen pen = new Pen(Color.Blue))

g.DrawEllipse(pen, new Rectangle(50, 50, 100, 150)); //эллипс

using (Pen pen = new Pen(Color.Green))

g.DrawRectangle(pen, new Rectangle(150, 150, 120, 100));//прямоугольник

string s="Примитивы";

Font font=new Font("Arial",18,FontStyle.Bold);

SolidBrush brush = new SolidBrush(Color.Black);

float x = 120;

float y = 20;

g.DrawString(s, font, brush, x, y); //вывод текста в точку (x,y)

}

}

}

}

Рисование графика функции

Рассмотрим пример программы, которая на форме Windows при соответствующем выборе из списка рисует два графика: sin(x) и cos(x) с текстовыми заголовками. Форма включает контейнер-список «Выбор графика» и кнопку с надписью «Построить», которая запускает обработчик, выполняющий все операции.

В обработчике выполняются следующие действия:

  • Вычисляется функция.

  • Задается ссылка на объект графики.

  • Выводится текст заголовка.

  • Рисуются координатные оси.

  • Рисуется график функции.

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

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;

comboBox1button1

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

int imax = 100; //число точек в периоде

int t = 2; //число периодов

int amp = 80; //амплитуда

int h = 40; //отступ для текста

int x0 = 20; //начала координат

int y0 = h + amp;

double[] f = new double[imax * t + 10]; //массив точек

if(comboBox1.Text== "sin(x)") если из списка выбрать строку "sin(x)"

{ // Расчет массива точек для графика "sin(x)"

for (int i = 0; i < imax * t; i++)

{

f[i] = Math.Round(amp * Math.Sin(2 * Math.PI / imax * i));

}

// Инструменты рисования

Graphics g = Graphics.FromHwnd(this.Handle); // Где рисуем

Pen pen = Pens.Black; // Чем рисуем

// Текст заголовка

g.DrawString("График синусоиды", new Font("Arial", 14), Brushes.Red, 40, 0);

// Рисуем график "sin(x)"

g.DrawLine(pen, x0, y0, x0 + imax * t, y0); //Рисуем ось X

g.DrawLine(pen, x0, y0 - amp, x0, y0 + amp); //Рисуем ось Y

g.DrawString("Y", new Font("Arial", 10), Brushes.Black, 10, 20);

g.DrawString("X", new Font("Arial", 10), Brushes.Black, x0 + imax * t, y0);

for (int i = 0; i < imax * t; i++) //Рисуем график

{

int f1 = y0 - (int)f[i]; //Координата Y[i]

int f2 = y0 - (int)f[i + 1]; //Координата Y[i+1]

g.DrawLine(pen, x0 + i, f1, x0 + i + 1, f2);

}

}

elseif(comboBox1.Text== "cos(x)") если из списка выбрать строку "cos(x)"

{ // Расчет массива точек для графика "cos(x)"

for (int i = 0; i < imax * t; i++)

{

f[i] = Math.Round(amp * Math.Cos(2 * Math.PI / imax * i));

}

// Инструменты рисования

Graphics g = Graphics.FromHwnd(this.Handle); // Где рисуем

Pen pen = Pens.Black; // Чем рисуем

// Текст заголовка

g.DrawString("График косинусоиды", new Font("Arial", 14), Brushes.Blue, 40, 0);

// Рисуем график "cos(x)"

g.DrawLine(pen, x0, y0, x0 + imax * t, y0); //Рисуем ось X

g.DrawLine(pen, x0, y0 - amp, x0, y0 + amp); //Рисуем ось Y

g.DrawString("Y", new Font("Arial", 10), Brushes.Black, 10, 20);

g.DrawString("X", new Font("Arial", 10), Brushes.Black, x0 + imax * t, y0);

for (int i = 0; i < imax * t; i++) //Рисуем график

{

int f1 = y0 - (int)f[i]; //Координата Y[i]

int f2 = y0 - (int)f[i + 1]; //Координата Y[i+1]

g.DrawLine(pen, x0 + i, f1, x0 + i + 1, f2);

}

}

}

}

}

При запуске отображается форма, в которой при выборе типа графика рисуется соответствующий график.

Пример. Создать программу отображения диаграммы двух функций sin(x) и cos(x) с использованием компонента Chart.

Проект – WindowsForm приложение. Стиль линий Spline.

Создаем – WindowsForm приложение. В форму заносим компоненты chart1 для отображения диаграммы и button1 для создания стартового обработчика событий.

В окне компонента chart1 в разделе Series определяем коллекцию из двух серий:

  • Для 1-й функции с именем sin(x).

  • Для 2-й функции с именем cos(x).

Стартовая форма

Изменение свойств графиков

using System;

…..

using System.Drawing;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

double y = 0;

for(intx= 0; (x<= 19);x++) //цикл по оси х

{

y=Math.Sin(Math.PI/ 5 *x); //расчет у 1-го графика

chart1.Series["sin(x)"].Points.AddXY(x, y);

y=Math.Cos(Math.PI/ 5 *x); //расчет у 2-го графика

chart1.Series["cos(x)"].Points.AddXY(x, y);

}

}

}

}

Компонент chatс помощью окна Свойства позволяет менять цветовую гамму и тип графика выбранной серии в коллекции.

Соседние файлы в папке ЛК