DrawEllipse

Рисованный Эллипс. Синтаксис метода:

g.DrawEllipse(pen, rect);

Здесь

g – переменная, определяющая, где рисуем,

DrawEllipse – метод рисования эллипса,

pen – перо,

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

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

В 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 (диагональная сетка), цвет переднего плана черный, фона белый.

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

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)

}

}

}

}

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

Рассмотрим пример программы, которая на форме 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;

comboBox1 button1

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);

}

}

else if (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 (int x = 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 с помощью окна Свойства позволяет менять цветовую гамму и тип графика выбранной серии в коллекции.

21.6. Растровая графика

Для растровой графики применяются различные форматы:

Bitmap (bmp), пиксельная графика.

TIFF

GIF

PNG

JPEG

BMP (Bitmap Picture) — формат хранения растровых изображений в виде пикселей. С форматом BMP работает огромное количество программ, так как его поддержка интегрирована в операционные системы.

TIFF (Tagged Image File Format) — формат хранения с использованием тегов. TIFF стал популярным форматом для хранения изображений с большой глубиной цвета.

GIF (Graphics Interchange Format) — формат для обмена изображениями. Формат GIF способен хранить сжатые данные без потери качества в формате до 256 цветов, что позволяет неплохо сжимать файлы, в которых много однородных заливок (логотипы, надписи, схемы). Формат GIF поддерживает анимационные изображения.

PNG (portable network graphics) — растровый формат хранения графической информации, использующий сжатие без потерь. PNG был создан как для улучшения,

JPEG (Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных графических форматов, применяемый для хранения фотоизображений. Алгоритм JPEG является алгоритмом сжатия данных с потерями.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: