
- •Основы программирования на языке с#
- •Структура программы
- •Типы данных в c#
- •Переменные и константы
- •Управляющие конструкции
- •If (условие) действие;
- •Комментарии
- •Int count; // Эта переменная хранит количество элементов
- •Массивы
- •Исключения
- •Среда Visual Studio
- •Общие сведения об основных понятиях платформы .Net Framework
- •Контейнеры: проекты и решения
- •Типы и расширения файлов в Visual Studio для с#
- •Переходы в рамках интегрированной среды разработки
- •Типы окон и операции над ними
- •Элементы управления
- •Панель элементов
- •Окно "Свойства"
- •Создание приложений Windows Forms
- •Операции над проектами Windows
- •В результате откроется окно Сохранить проект.
- •Работа с формами
- •Создание формы Windows Forms
- •Настройка формы
- •Просмотр кода для формы
- •Создание глобальной переменной класса Form
- •Переименование формы
- •Установка расположения форм Windows Forms на экране
- •Выбор начальной формы в приложении Windows
- •Настройка размера формы Windows Forms
- •Добавление фоновых изображений в формы Windows Forms.
- •Отображение модальных и немодальных форм Windows Forms
- •Создание прозрачных форм Windows Forms
- •Изменение границ формы Windows Forms с помощью конструктора
- •Переход между формами
- •Cкрытие и закрытие форм
- •Работа с элементами управления Windows Forms
- •Добавление элементов управления в формы Windows Forms
- •Изменение размера элементов управления в формах Windows Forms
- •Определение текста, отображаемого элементом управления Windows Forms
- •Определение клавиш доступа для элементов управления Windows Forms
- •Добавление элементов управления, для которых не существует пользовательского интерфейса, в формы Windows Forms
- •Закрепление элементов управления в формах Windows Forms
- •Выравнивание нескольких элементов управления в формах Windows Forms
- •Обработка события клавиши на элементе управления
- •Обращение к элементу управления на другой форме
- •Привязка элементов управления в формах Windows Forms
- •Элементы управления
- •Button – кнопка)
- •Надпись – Label
- •Поле ввода TextBox
- •Чтобы выделить текст программными средствами:
- •Панель Panel
- •Таймер Timer
- •Переключатель CheckBox
- •Переключатель RadioButton
- •Группа объектов GroupBox
- •Списки ComboBox
- •Рисунки PictureBox
- •Чтобы задать рисунок программными средствами задайте свойство Image при помощи метода FromFile класса Image, например:
- •Массив рисунков ImageList
- •Программное меню MenuStrip
- •Синхронизация меню на разных формах
- •Создание списка в окне интерфейса mdi с помощью MenuStrip
- •Блокирование доступа к элементам меню ToolStripMenuItem
- •Скрытие объектов ToolStripMenuItem
- •Контекстное меню ContextMenu
- •Привязка контекстного меню к элементу управления.
- •Панель инструментов ToolStrip
- •Строка состояния StatusStrip
- •Размер таблицы
- •Интерфейс таблицы
- •Диалоговые окна OpenFileDialog и SaveFileDialog
- •Работа с цветами ColorDialog
- •Шрифты FontDialog
- •Счетчик DomainUpDown
- •Счетчик NumericUpDown
- •Индикатор процесса ProgressBar
- •Текстовый редактор RichTextBox
- •Элемент управления Windows Forms RichTextBox позволяет записывать отображаемые в нем данные в одном из следующих форматов:
- •Вкладки TabControl
- •Чтобы добавить новую вкладку:
- •Календарь MonthCalendar
- •Браузер WebBrowser
- •Диалоговое окно MessageBox
- •Создание графических объектов
- •Методы класса Graphics
- •Примеры построения графических объектов
- •Кривая Безье
- •Построение треугольника в этом примере создадим код для рисования треугольника. Координаты треугольника создаются случайным образом: Чтобы создать треугольник:
- •Создание графика функции в этом примере создадим код для построения графика функции на интервале .
- •Чтобы построить график функции необходимо:
- •Диаграммы
- •Установка компонента по работе с диаграммами
- •Основные методы по работе с компонентом zedGraphControl
- •Примеры построения диаграмм
- •Создание приложений на языке Visual c# в среде программирования Visual Studio Учебное пособие
- •665709, Братск, ул.Макаренко,40
-
Основные методы по работе с компонентом zedGraphControl
1) Создание панели для рисования
GraphPane pane = new GraphPane();
2) Очистка списка кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear ();
3) Создание списка точек (Х, У) для построения кривой:
PointPairList list = new PointPairList ();
4) Заполнение списка точек (Х, У) для построения кривой, например на диапазоне [-50; 50]:
double xmin = -50;
double xmax = 50;
for (double x = xmin; x <= xmax; x += 0.01)
{// добавим в список точку
list.Add (x, f(x));
}
5) Создание кривой с названием "График", которая будет рисоваться голубым цветом (Color.Blue), опорные точки выделяться не будут (SymbolType.None):
LineItem myCurve = pane.AddCurve ("Название графика", список точек, цвет, SymbolType.None);
Пример:
LineItem myCurve = pane.AddCurve ("График", list, Color.Blue, SymbolType.None);
6) Обновление данных об осях с помощью метода AxisChange (). В противном случае на рисунке будет показана только часть графика, которая умещается в интервалы по осям, установленные по умолчанию.
pane.AxisChange ();
7) Создание полотна:
zedGraphControl1.GraphPane = pane;
8) Изменение пределов отображаемой области по осям
double xmin_limit = -10;
double xmax_limit = 80;
double ymin_limit = -1.0;
double ymax_limit = 1.0;
Устанавливаем интересующий нас интервал по оси X
pane.XAxis.Scale.Min = xmin_limit;
pane.XAxis.Scale.Max = xmax_limit;
Устанавливаем интересующий нас интервал по оси Y
pane.YAxis.Scale.Min = ymin_limit;
pane.YAxis.Scale.Max = ymax_limit;
9) Изменение порядка нумерации:
Примечание. Если минимальное значение оси 0, то нумерация пойдет: 3, 13,…..
pane.YAxis.Scale.BaseTic = 3;
10) Изменение расстояния между крупными и мелкими рисками
Шаг от минимального значения оси для крупных рисок:
pane.YAxis.Scale.MajorStep = 10;
Шаг от минимального значения оси для мелких рисок:
pane.YAxis.Scale.MinorStep=2;
11) Настройка масштаба диаграммы по размеру компонента
Rectangle r = new Rectangle();
r.Width = zedGraphControl1.Width;
r.Height = zedGraphControl1.Height;
pane.Rect = r;
12) Отключение лупы (Zoom):
zedGraphControl1.IsEnableHZoom = false;
zedGraphControl1.IsEnableVZoom = false;
13) Построение графика в виде отдельных не связанных точек
// Создадим кривую с названием "Разброс". Обводка ромбиков будут рисоваться голубым цветом (Color.Blue), Опорные точки - ромбики (SymbolType.Diamond)
LineItem myCurve = pane.AddCurve ("Разброс", list, Color.Blue, SymbolType.Diamond);
//У кривой линия будет невидимой
myCurve.Line.IsVisible = false;
//Цвет заполнения отметок (ромбиков) – голубой
myCurve.Symbol.Fill.Color = Color.Blue;
//Тип заполнения - сплошная заливка
myCurve.Symbol.Fill.Type = FillType.Solid;
//Размер ромбиков
myCurve.Symbol.Size = 7;
14) Обновление графика
Global.f7.Refresh();
или
zedGraphControl1.Refresh();
15) Удаление легенды:
pane.Legend.IsVisible = false;
16) Вставка заголовка диаграммы:
pane.Title.Text = "Графики";
17) Удаление горизонтальной линии по уровню y = 0 на графике
pane.YAxis.MajorGrid.IsZeroLine = false;
18) Построение графика по вертикали
//Линия по нулевому уровню должна быть перпендикулярна оси X
pane.XAxis.MajorGrid.IsZeroLine = true;
//Поменяем названия осей, чтобы еще больше запутать противника :)
pane.XAxis.Title.Text = "YAxis";
pane.YAxis.Title.Text = "XAxis";
19) Построение на графике линий, стрелок и размещение текста
//Линию рисуем после обновления осей с помощью AxisChange (), так как мы будем использовать значения. Нарисуем горизонтальную пунктирную линию от левого края до правого на уровне y = 0.5
double level = 0.5;
LineObj line = new LineObj (pane.XAxis.Scale.Min, level,
pane.XAxis.Scale.Max, level);
//Стиль линии – пунктирная
line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
//Добавим линию в список отображаемых объектов
pane.GraphObjList.Add (line);
//Нарисуем стрелку, указывающую на максимум функции
Координаты точки, куда указывает стрелка
Координаты привязаны к осям
double xend = 0.0;
double yend = f(0);
//Координаты точки начала стрелки
double xstart = xend + 5.0;
double ystart = yend + 0.1;
//Рисование стрелки с текстом
Создадим стрелку
ArrowObj arrow = new ArrowObj (xstart, ystart, xend, yend);
//Добавим стрелку в список отображаемых объектов
pane.GraphObjList.Add (arrow);
//Напишем текст около начала стрелки
Координаты привязаны к осям
TextObj text = new TextObj ("Max", xstart, ystart);
//Отключим рамку вокруг текста
text.FontSpec.Border.IsVisible = false;
//Изменим цвет текста
text.FontSpec.FontColor = Color.Green;
//Добавим текст в список отображаемых объектов
pane.GraphObjList.Add (text);
20) Отображение сетки и изменение ее внешнего вида
//Включаем отображение сетки напротив крупных рисок по оси X
pane.XAxis.MajorGrid.IsVisible = true;
//Задаем вид пунктирной линии для крупных рисок по оси X:
//Длина штрихов равна 10 пикселям, ...
pane.XAxis.MajorGrid.DashOn = 10;
//затем 5 пикселей – пропуск
pane.XAxis.MajorGrid.DashOff = 5;
//Включаем отображение сетки напротив мелких рисок по оси X
pane.YAxis.MinorGrid.IsVisible = true;
21) Построение гистограммы и текстовых осей
int itemscount = 5;
//Подписи под столбиками
string[] names = new string[itemscount];
//Высота столбиков
double[] values = new double[itemscount];
//Заполним данные
for (int i = 0; i < itemscount; i++)
{names[i] = string.Format ("Текст {0}", i);
values[i] = rnd.NextDouble ();
}
//Создадим кривую-гистограмму Первый параметр - название кривой для легенды Второй параметр - значения для оси X, т.к. у нас по этой оси будет идти текст, а функция ожидает тип параметра double[], то пока передаем null Третий параметр - значения для оси Y Четвертый параметр – цвет
BarItem curve = pane.AddBar ("Гистограмма", null, values, Color.Blue);
//Настроим ось X так, чтобы она отображала текстовые данные
pane.XAxis.Type = AxisType.Text;
//Уставим для оси наши подписи
pane.XAxis.Scale.TextLabels = names;
22) Изменение размеров шрифтов у различных элементов графика
//Размеры шрифтов для разных элементов графика
int labelsXfontSize = 25;
int labelsYfontSize = 20;
int titleXFontSize = 25;
int titleYFontSize = 20;
int legendFontSize = 15;
int mainTitleFontSize = 30;
//Установим размеры шрифтов для меток вдоль осей
pane.XAxis.Scale.FontSpec.Size = labelsXfontSize;
pane.YAxis.Scale.FontSpec.Size = labelsYfontSize;
//Установим размеры шрифтов для подписей по осям
pane.XAxis.Title.FontSpec.Size = titleXFontSize;
pane.YAxis.Title.FontSpec.Size = titleYFontSize;
//Установим размеры шрифта для легенды
pane.Legend.FontSpec.Size = legendFontSize;
//Установим размеры шрифта для общего заголовка
pane.Title.FontSpec.Size = mainTitleFontSize;
pane.Title.FontSpec.IsUnderline = true;
22) Установка масштаба по осям по умолчанию
//Установим масштаб по умолчанию для оси X
pane.XAxis.Scale.MinAuto = true;
pane.XAxis.Scale.MaxAuto = true;
23) Построение пунктирные и штрихпунктирные линии
//Используем предустановленный стиль, рисующий кривую точками. Идентификатор стиля определен в стиле
System.Drawing.Drawing2D.DashStyle.myCurve.Line.Style = DashStyle.Dot;
//Укажем, что график должен быть сглажен, иначе не сплошные линии будут выглядеть неаккуратно. Это происходит из-за того, что без использования сглаживания ZedGraph будет каждый участок линии рисовать независимо от соседних.
myCurve.Line.IsSmooth = true;
//Используем предустановленный стиль, рисующий кривую в виде штрихпунктирной линии.
myCurve.Line.Style = DashStyle.DashDot;
//Определим свой стиль рисования линии
myCurve.Line.Style = DashStyle.Custom;
//Длина пунктира будет 10 у.е. (1 у.е = 1/72 inch)
myCurve.Line.DashOn = 10.0f;
//Длина пропуска между пунктирами
myCurve.Line.DashOff = 3.0f;
24) Использование кластеров в гистограммах
int itemscount = 5;
Random rnd = new Random ();
//Высота столбиков
double[] YValues1 = new double[itemscount];
double[] YValues2 = new double[itemscount];
double[] YValues3 = new double[itemscount];
double[] XValues = new double[itemscount];
//Заполним данные
for (int i = 0; i < itemscount; i++)
{XValues[i] = i + 1;
YValues1[i] = rnd.NextDouble ();
YValues2[i] = rnd.NextDouble ();
YValues3[i] = rnd.NextDouble ();
}
//Создадим три гистограммы
Так как для всех гистограмм мы передаем одинаковые массивы координат по X, то столбики будут группироваться в кластеры в этих точках.
BarItem bar1 = pane.AddBar ("Values1", XValues, YValues1, Color.Blue);
BarItem bar2 = pane.AddBar ("Values2", XValues, YValues2, Color.Red);
BarItem bar3 = pane.AddBar ("Values3", XValues, YValues3, Color.Yellow);
//Расстояния между столбиками в кластере (группами столбиков)
Pane.BarSettings.MinBarGap = 0.0f;
//Увеличим расстояние между кластерами в 2.5 раза
pane.BarSettings.MinClusterGap = 2.5f;