
- •1 Содержание задания
- •2 Исходные данные
- •2.1 Характеристика объекта автоматизации:
- •2.2 Требования к информационному обеспечению:
- •Реферат
- •Введение
- •Системотехническая часть
- •Описание и анализ предметной области
- •Основные понятия и определения
- •Классификация случайных процессов
- •Моделирование сп
- •Статистическая оценка характеристик сп
- •Описание аналогов системы
- •Постановка задачи
- •Разработка структурной схемы системы
- •Разработка и описание алгоритмов
- •Выбор и обоснование программных средств
- •Выбор операционной системы
- •Выбор языка программирования
- •Конструкторско-технологическая часть
- •Разработка пользовательского интерфейса системы
- •Описание контрольного примера
- •Список использованной литературы
- •МодульExponent
- •Модуль Veibulla
- •Модуль Sum_process
Список использованной литературы
Прохоров, С. А. Математическое описание и моделирование случайных процессов [Текст] / С. А. Прохоров – Самара: изд-во СГАУ, 2001. – 209 с.: ил.
Определение технологии RAD [Электронный ресурс] http://www.informicus.ru/RAD
Подрезова, В. И. Компьютерное моделирование процессов деления потоков волокнистого материала и управления ими [Текст] / В. И. Подрезова – М. Мир, 2008. – 18с.: ил.
Определение декомпозиции [Электронный ресурс] http://citforum.ru/programming/case/ooad_systemology
СТО СГАУ 02068410-004-2007. Общие требования к учебным текстовым документам [Текст]: методические указания. Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2007. 30 с.
Приложение 1
Типовые законы распределения
Название закона |
f(x) |
F(x) |
Экспоненциальный |
|
|
Вейбулла |
|
|
Приложение 2
Обратные функции законов распределения
Название закона распределения |
Обратная функция F-1(x) |
Экспоненциальный |
|
Вейбулла |
|
ПРИЛОЖЕНИЕ З
Листинг модулей программы
Модуль Form1
Модуль Form1 – содержит основную логику взаимодействия с пользователем, методы чтения и записи в файл, выгрузки графиков.
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;
using ZedGraph;
using System.IO;
namespace Kyrsovoi_erm
{
public partial class Form1 : Form
{
bool func_nun = true;
Double alpha_value;
Double betta_value;
// Double discret;
int col_count = 1;
Veibolla veib = new Veibolla();
Exponent exp = new Exponent();
Sum_process s_p;
Double mat_oj = 0;
Double disp = 0;
Double k_assim = 0;
Double k_excess = 0;
int size=0;
public Form1()
{
InitializeComponent();
}
private void DrawGraph()
{
//////////////////////////////////////////////////////////////////
////////////////////Функция...................................
//////////////////////////////////////////////////////////////////
Calculate_func();
//////////////////////////////////////////////////////////////////
////////////////////Процесс...................................
//////////////////////////////////////////////////////////////////
Calculate_process();
//////////////////////////////////////////////////////////////////
////////////////////Гистограмма...................................
//////////////////////////////////////////////////////////////////
Calculate_gist();
//////////////////////////////////////////////////////////////////
////////////////////Плотность...................................
//////////////////////////////////////////////////////////////////
Calculate_Plotnost();
//////////////////////////////////////////////////////////////////
////////////////////Мат.Ожидание.................................
//////////////////////////////////////////////////////////////////
Mat_oj_val.Text = Calculate_mat_oj().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Дисперсия.................................
//////////////////////////////////////////////////////////////////
disp_val.Text = Calculate_disp().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Коэфицент ассиметрии.................................
//////////////////////////////////////////////////////////////////
k_assim_val.Text = Calculate_k_assim().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Коэфициет эксцесса.................................
//////////////////////////////////////////////////////////////////
k_excess_val.Text = Calculate_k_excess().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Процесс сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_process();
//////////////////////////////////////////////////////////////////
////////////////////Гистограмма сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_gist();
//////////////////////////////////////////////////////////////////
////////////////////Плотность сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_dansity();
}
private void button1_Click(object sender, EventArgs e)
{
DrawGraph();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex == 0)
{
func_nun = true; // экспонента
textBox2.Enabled = false;
}
else
{
func_nun = false; // вейбулла
textBox2.Enabled = true;
}
}
private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
// if (tabControl1.SelectedIndex == 0)
// button1.Enabled = true;
}
public void Calculate_func()
{
// Получим панель для рисования
GraphPane pane = zedGraph_func.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
// Создадим список точек
PointPairList list = new PointPairList();
if (func_nun == true) //экспонента
{
if (Double.TryParse(textBox1.Text, out alpha_value))
{
size = (int)numericUpDown1.Value;
list = exp.Calculate_Exponenta_func(alpha_value, size); // Заполняем список точек
}
else
{
if (!Double.TryParse(textBox1.Text, out alpha_value))
{
MessageBox.Show("Проверьте правильность ввода параметра альфа", "Некорректный ввод");
textBox1.Clear();
}
/*if (!Double.TryParse(textBox3.Text, out discret))
{
MessageBox.Show("Проверьте правильность ввода параметра дельта", "Некорректный ввод");
textBox3.Clear();
}*/
}
}
else
if (func_nun == false)//вейбулла
{
size = (int)numericUpDown1.Value;
if ((Double.TryParse(textBox2.Text, out betta_value)) && (Double.TryParse(textBox1.Text, out alpha_value)))
{
// Заполняем список точек
list = veib.Calculate_Veibolla_func(alpha_value, betta_value, size);
}
else
{
if (!Double.TryParse(textBox1.Text, out alpha_value))
{
MessageBox.Show("Проверьте правильность ввода параметров альфа", "Некорректный ввод");
textBox1.Clear();
}
if (!Double.TryParse(textBox2.Text, out betta_value))
{
MessageBox.Show("Проверьте правильность ввода параметров бетта", "Некорректный ввод");
textBox2.Clear();
}
/*if (!Double.TryParse(textBox3.Text, out discret))
{
MessageBox.Show("Проверьте правильность ввода параметра дельта", "Некорректный ввод");
textBox3.Clear();
}*/
}
}
// Создадим кривую с названием "Sinc",
// которая будет рисоваться голубым цветом (Color.Blue),
// Опорные точки выделяться не будут (SymbolType.None)
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
LineItem myCurve = pane.AddCurve(func_name, list, Color.Coral, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraph_func.AxisChange();
// Обновляем график
zedGraph_func.Invalidate();
}
private void Calculate_Plotnost()
{
// if (((func_nun) && (!exp.flistIsEmpty())) || ((!func_nun) && (!veib.flistIsEmpty()))) //нажимали ли кнопку
// {
//if (Int32.TryParse(textBox4.Text, out col_count))// получаем количество коридоров
// {
col_count = (int)numericUpDown2.Value;
PointPairList list = new PointPairList();
PointPairList tlist = new PointPairList();
/* if (((func_nun) && (exp.glistIsEmpty())) || ((!func_nun) && (veib.glistIsEmpty())))
{
if (func_nun)
{
list = exp.Calculate_gist(col_count);
}
else
{
list = veib.Calculate_gist(col_count);
}
}
else
{*/
if (func_nun)
{
list = exp.getGlist();
tlist = exp.Calculate_theoretical_density();
}
else
{
list = veib.getGlist();
tlist = veib.Calculate_theoretical_density();
}
//}
// Получим панель для рисования
GraphPane pane = zedGraphDensity.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
LineItem myCurve = pane.AddCurve("Эксперементальная плотность " + func_name, list, Color.Coral, SymbolType.None);
LineItem myCurve2 = pane.AddCurve("Теоретическая плотность " + func_name, tlist, Color.Blue, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraphDensity.AxisChange();
// Обновляем график
zedGraphDensity.Invalidate();
/* }
else
{
MessageBox.Show("Проверьте правильность ввода параметра 'Количество столбцов'", "Некорректный ввод");
textBox4.Clear();
}*/
/* }
else
{
MessageBox.Show("Нажмите кнопку для генерации значений функции распределения", "Некорректный ввод");
}*/
}
public void Calculate_gist()
{
//if (Int32.TryParse(textBox4.Text, out col_count))// получаем количество коридоров
// {
//button1.Enabled = false;
col_count = (int)numericUpDown2.Value;
// Получим панель для рисования
GraphPane gist_pane = zedGraph_gist.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
gist_pane.CurveList.Clear();
string func_name;
PointPairList glist;
if (func_nun)
{
func_name = "Exponenta";
glist = exp.Calculate_gist(col_count);
}
else
{
func_name = "Veibulla";
glist = veib.Calculate_gist(col_count);
}
// MessageBox.Show("Задница", "Некорректный ввод");
BarItem bar = gist_pane.AddBar("Гистограмма" + func_name, glist, Color.Blue);
// !!! Расстояния между кластерами (группами столбиков) гистограммы = 0.0
// У нас в кластере только один столбик.
gist_pane.BarSettings.MinClusterGap = 0.0f;
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph_gist.AxisChange();
// Обновляем график
zedGraph_gist.Invalidate();
/*}
else
{
if (!Int32.TryParse(textBox4.Text, out col_count))
{
MessageBox.Show("Проверьте правильность ввода параметра 'Количество столбцов'", "Некорректный ввод");
textBox4.Clear();
}
}*/
}
public void Calculate_process()
{
Double [] process = new Double[size];
Double[] index = new Double[size];
if (func_nun)
{
process = exp.getProcess();
}
else
{
process = veib.getProcess();
}
for (int i = 0; i < size; i++)
{
index[i] = i;
}
// Получим панель для рисования
GraphPane pane = zedGraph_process.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
LineItem myCurve = pane.AddCurve("Процесс " + func_name,index, process, Color.Blue, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraph_process.AxisChange();
// Обновляем график
zedGraph_process.Invalidate();
/* }
else
{
MessageBox.Show("Проверьте правильность ввода параметра 'Количество столбцов'", "Некорректный ввод");
textBox4.Clear();
}*/
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (((func_nun) && (!exp.flistIsEmpty())) || ((!func_nun) && (!veib.flistIsEmpty()))) //нажимали ли кнопку
{
saveFileDialog1.Filter = "Текстовый *.txt|*.txt";
saveFileDialog1.ShowDialog();
}
else
{
MessageBox.Show("Нажмите кнопку для генерации значений функции распределения", "Невозможно сохранить");
}
}
public Double Calculate_mat_oj()
{
mat_oj = 0;
Double [] process= new Double[size];
// PointPairList list = new PointPairList();
if (func_nun) //экспонента
{
process = exp.getProcess();
}
else // вейбулла
{
process = veib.getProcess();
}
mat_oj = process.Sum()/size;
return mat_oj;
}
public Double Calculate_disp()
{
disp = 0;
Double [] process = new Double[size];
if (func_nun) //экспонента
{
process = exp.getProcess();
}
else // вейбулла
{
process = veib.getProcess();
}
for (int i = 0; i < size; i++)
{
disp += Math.Pow(process[i] - mat_oj,2);
}
disp = disp / (size - 1);
return disp;
}
public Double Calculate_k_assim()
{
Double[] process = new Double[size];
Double m3 = 0;
if (func_nun) //экспонента
{
process = exp.getProcess();
}
else // вейбулла
{
process = veib.getProcess();
}
for (int i = 0; i < size; i++)
{
m3 += Math.Pow(process[i] - mat_oj, 3);
}
m3 = m3 / (size-1);
k_assim = m3 / Math.Pow(disp,3/2);
return k_assim;
}
public Double Calculate_k_excess()
{
Double[] process = new Double[size];
Double m4 = 0;
if (func_nun) //экспонента
{
process = exp.getProcess();
}
else // вейбулла
{
process = veib.getProcess();
}
for (int i = 0; i < size; i++)
{
m4 += Math.Pow(process[i] - mat_oj, 4);
}
m4 = m4 / (size-1);
k_excess = (m4 / Math.Pow(disp, 2))-3;
return k_excess;
}
public void Calculate_sum_process()
{
Double tay = (Double) numericUpDown3.Value;
PointPairList list = new PointPairList();
if (func_nun) //экспонента
{
s_p = new Sum_process(exp.getProcess(),tay);
}
else // вейбулла
{
s_p = new Sum_process(veib.getProcess(), tay);
}
list = s_p.Calculate_summ_count();
// Получим панель для рисования
GraphPane pane = zedGraph_sum_process.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
LineItem myCurve = pane.AddCurve("Процесс сумм" + func_name,list ,Color.Blue, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraph_sum_process.AxisChange();
// Обновляем график
zedGraph_sum_process.Invalidate();
}
public void Calculate_sum_gist()
{
PointPairList list = new PointPairList();
int col_count = (int)numericUpDown2.Value;
list = s_p.Calculate_gist(col_count);
// Получим панель для рисования
GraphPane gist_pane = zedGraph_sum_gist.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
gist_pane.CurveList.Clear();
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
BarItem bar = gist_pane.AddBar("Гистограмма сумм" + func_name, list, Color.Blue);
// !!! Расстояния между кластерами (группами столбиков) гистограммы = 0.0
// У нас в кластере только один столбик.
gist_pane.BarSettings.MinClusterGap = 0.0f;
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
zedGraph_sum_gist.AxisChange();
// Обновляем график
zedGraph_sum_gist.Invalidate();
}
public void Calculate_sum_dansity()
{
// Получим панель для рисования
GraphPane pane = zedGraph_sum_density.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
PointPairList list = new PointPairList();
list = s_p.getGlist();
string func_name = "Exponenta";
if (!func_nun)
func_name = "Veibulla";
LineItem myCurve = pane.AddCurve("Процесс сумм" + func_name, list, Color.Coral, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraph_sum_density.AxisChange();
// Обновляем график
zedGraph_sum_density.Invalidate();
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Текстовый (*.txt)|*.txt";
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string way;
if (openFileDialog1.FileName != "")
{
//MessageBox.Show("Все ок");
way = openFileDialog1.FileName;
// Double[] s;
//int count;
//count = 0;
Double[] process;
// PointPairList list = new PointPairList();
Double discret;
// String [] str;
bool err = false;
string line ="";
System.IO.StreamReader file =
new System.IO.StreamReader(way);
if ((line = file.ReadLine()) != null)
{
if (!Int32.TryParse(line, out size))
{
err = true;
}
}
if(((line = file.ReadLine()) != null)&&(!err))
{
if (!Double.TryParse(line, out discret))
{
err = true;
}
}
// Read the file and display it line by line.
int i = 0;
process = new Double[size];
while (((line = file.ReadLine()) != null)&&(i<size)&&(!err))
{
if (!Double.TryParse(line, out process[i]))
{
err = true;
}
i++;
}
if (err)
{
MessageBox.Show("Некорректный формат файла");
file.Close();
}
else
{
file.Close();
exp.Analise_process(process);
veib.Analise_process(process);
exp.Calculate_gist((int)numericUpDown2.Value);
veib.Calculate_gist((int)numericUpDown2.Value);
PointPairList list = new PointPairList();
PointPairList tlist = new PointPairList();
double exp_delta = 0;
double veib_delta = 0;
int alpha_mega = 500;
int betta_mega = 500;
Double[,] exp_mega = new Double[alpha_mega-1,2 ];
Double[,] veib_mega = new Double[(alpha_mega-2)*(betta_mega-1),3];
Double [] min_exp = new Double[2];
Double[] min_veib = new Double[3];
list = exp.getGlist(); // экспонента
int h;
for ( h = 1; h < alpha_mega; h++)
{
exp_delta = 0;
exp.Set_alpha(h);
tlist = exp.Calculate_theoretical_density();
for (int j=0; j < list.Count; j++)
{
exp_delta += Math.Abs(list.ElementAt(j).Y - tlist.ElementAt(j).Y);
}
exp_delta = exp_delta / list.Count;
exp_mega[h-1, 0] = h;
exp_mega[h-1, 1] = exp_delta;
if (h == 1)
{
min_exp[0] = exp_mega[0, 0];
min_exp[1] = exp_mega[0,1];
}
if (exp_mega[h - 1, 1] < min_exp[1])
{
min_exp[0] = exp_mega[h-1, 0];
min_exp[1] = exp_mega[h-1, 1];
}
}
list = veib.getGlist(); //вейбулла
int a;
long index =0;
for ( a= 2; a < alpha_mega; a++) //экспонета это вейбулла при а = 1
{
for (int b = 1; b < betta_mega; b++)
{
veib_delta = 0;
veib.Set_alpha_betta(a,b);
tlist = veib.Calculate_theoretical_density();
for (int j = 0; j < list.Count; j++)
{
veib_delta += Math.Abs(list.ElementAt(j).Y - tlist.ElementAt(j).Y);
}
veib_delta = veib_delta / list.Count;
veib_mega[index, 0] = a;
veib_mega[index, 1] = b;
veib_mega[index, 2] = veib_delta;
if ((a == 2)&&(b==1))
{
min_veib[0] = veib_mega[0, 0];
min_veib[1] = veib_mega[0, 1];
min_veib[2] = veib_mega[0, 2];
}
if (veib_mega[index, 2] < min_veib[2])
{
min_veib[0] = veib_mega[index, 0];
min_veib[1] = veib_mega[index, 1];
min_veib[2] = veib_mega[index, 2];
}
index++;
}
}
string func_name = "Exponenta";
if (min_exp[1] < min_veib[2])
{
exp.Set_alpha(min_exp[0]);
// al
MessageBox.Show("Экспонента a="+min_exp[0]);
func_nun = true;
list = exp.Calculate_Exponenta_func_from_file();
}
else
{
veib.Set_alpha_betta(min_veib[0],min_veib[1]);
MessageBox.Show("Вейбулла a="+min_veib[0]+" b="+min_veib[1]);
func_nun = false;
list = veib.Calculate_Veobulla_func_from_file();
func_name = "Veibulla";
}
//////////////////////////////////////////////////////////////////
////////////////////Функция...................................
//////////////////////////////////////////////////////////////////
// Получим панель для рисования
GraphPane pane = zedGraph_func.GraphPane;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear();
LineItem myCurve = pane.AddCurve("Функция распределения " + func_name, list, Color.Coral, SymbolType.None);
zedGraph_func.AxisChange();
// Обновляем график
zedGraph_func.Invalidate();
//////////////////////////////////////////////////////////////////
////////////////////Процесс...................................
//////////////////////////////////////////////////////////////////
Calculate_process();
//////////////////////////////////////////////////////////////////
////////////////////Гистограмма...................................
//////////////////////////////////////////////////////////////////
Calculate_gist();
//////////////////////////////////////////////////////////////////
////////////////////Плотность...................................
//////////////////////////////////////////////////////////////////
Calculate_Plotnost();
//////////////////////////////////////////////////////////////////
////////////////////Мат.Ожидание.................................
//////////////////////////////////////////////////////////////////
Mat_oj_val.Text = Calculate_mat_oj().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Дисперсия.................................
//////////////////////////////////////////////////////////////////
disp_val.Text = Calculate_disp().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Коэфицент ассиметрии.................................
//////////////////////////////////////////////////////////////////
k_assim_val.Text = Calculate_k_assim().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Коэфициет эксцесса.................................
//////////////////////////////////////////////////////////////////
k_excess_val.Text = Calculate_k_excess().ToString();
//////////////////////////////////////////////////////////////////
////////////////////Процесс сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_process();
//////////////////////////////////////////////////////////////////
////////////////////Гистограмма сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_gist();
//////////////////////////////////////////////////////////////////
////////////////////Плотность сумм.................................
//////////////////////////////////////////////////////////////////
Calculate_sum_dansity();
}
}
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string way;
if (saveFileDialog1.FileName != "")
{
way = saveFileDialog1.FileName;
String[] s;
int count;
Double[] process = new Double [size];
//PointPairList list = new PointPairList();
Double discret;
if (func_nun)
{
count = size + 2;
discret = (exp.getxmax() - exp.getxmin()) / size;
s = new string[count];
s[0] = size.ToString();
s[1] = discret.ToString();
process = exp.getProcess();
for (int i = 2; i < count; i++)
{
s[i] = process[i-2].ToString();
}
}
else
{
count = size + 2;
discret = (veib.getxmax() - veib.getxmin()) / size;
s = new string[count];
s[0] = size.ToString();
s[1] = discret.ToString();
process = veib.getProcess();
for (int i = 2; i < count; i++)
{
s[i] = process[i-2].ToString();
}
}
for (int n = 0; n < count; n++)
{
File.WriteAllLines(way, s);
}
}
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
string message = "Вы действительно хотите выйти?";
string caption = "Выход";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result;
// Displays the MessageBox.
result = MessageBox.Show(message, caption, buttons);
if (result == System.Windows.Forms.DialogResult.Yes)
{
// Closes the parent form.
this.Close();
}
//zedGraph_func.MasterPane.GetImage().Save("test.bmp");
}
private void button2_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
String way;
if (folderBrowserDialog1.SelectedPath != null)
way = folderBrowserDialog1.SelectedPath;
else
way = folderBrowserDialog1.RootFolder.ToString();
zedGraph_process.MasterPane.GetImage().Save(way+"\\process.bmp");
zedGraph_func.MasterPane.GetImage().Save(way + "\\function.bmp");
zedGraph_gist.MasterPane.GetImage().Save(way + "\\gistogramm.bmp");
zedGraphDensity.MasterPane.GetImage().Save(way + "\\density.bmp");
zedGraph_sum_process.MasterPane.GetImage().Save(way + "\\sum_process.bmp");
zedGraph_sum_gist.MasterPane.GetImage().Save(way + "\\sum_gistogramm.bmp");
zedGraph_sum_density.MasterPane.GetImage().Save(way + "\\sum_density.bmp");
}
//zedGraph_func.MasterPane.GetImage().Save("test.bmp");
}
}
}