Лабораторная работа по Си шарп ZedGraph 2D модель

Цель работы

Cоздать из массива целых чисел 2D модель и вывести результат моделирования на экран.

 Лабораторное задание

1. Изучить принципы работы графических библиотек ZedGraph, ChartDirector, SteamChart, MSChart.
2. С помощью данных библиотек в соответствии с заданием разработать программу на языке C#.
3. Данные визуализации являются массивом – размером X разрядов, который генерируется программно с помощью генератора случайных чисел (П) или читается из двоичного файла (Ф) – данные записываются программно в файл, а затем читаются из него функциями BinaryReader и BinaryWriter.
Данные о библиотеке, которую необходимо будет использовать, разрядности элементов  массива, его размере и способе получения берутся из задания, каждое из которых будет соответствовать одному из вариантов.


Вариант №5:
Библиотека ZedGraph;
Массив состоит из 64-разрядных элементов;
Размер массива = 256 элементов;
Массив генерируется случайно с помощью генератора случайных чисел.

         Листинг


Файл Form1.cs


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;
namespace Lab_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            SettingOfPane(Graphics.GraphPane);
        }
        public static Int64 NextInt64(Random rnd)
        {
            var buffer = new byte[sizeof(Int64)];
            rnd.NextBytes(buffer);
            return BitConverter.ToInt64(buffer,0);
        }
        public void SettingOfPane(GraphPane pane)
        {
            pane.IsFontsScaled = false;
            pane.XAxis.Scale.FontSpec.Size = 20;
            pane.YAxis.Scale.FontSpec.Size = 20;
            pane.XAxis.Title.Text = "Аргумент x";
            pane.YAxis.Title.Text = "y=f(x)";
            pane.XAxis.Title.FontSpec.IsItalic = true;
            pane.YAxis.Title.FontSpec.IsItalic = true;
            pane.XAxis.Title.FontSpec.Size = 25;
            pane.YAxis.Title.FontSpec.Size = 25;
            pane.Title.FontSpec.Size = 38;
            pane.Title.FontSpec.IsUnderline = true;
            pane.Title.Text = "График ф-ции: y=f(x)";
            pane.Border.Color = Color.Coral;
            pane.Fill.Type = FillType.Solid;
            pane.Fill.Color = Color.DarkGray;
            pane.Chart.Fill.Type = FillType.Solid;
            pane.Chart.Fill.Color = Color.Black;
            pane.XAxis.MajorGrid.IsVisible = true;
            pane.YAxis.MajorGrid.IsVisible = true;
            pane.XAxis.MajorGrid.Color = Color.Cyan;
            pane.YAxis.MajorGrid.Color = Color.Cyan;
            pane.XAxis.MajorGrid.IsZeroLine = true;
            pane.YAxis.MajorGrid.IsZeroLine = true;
            pane.XAxis.Color = Color.Gray;
            pane.YAxis.Color = Color.Gray;
            pane.Title.FontSpec.FontColor = Color.Crimson;
            pane.XAxis.Title.FontSpec.FontColor = Color.Olive;
            pane.YAxis.Title.FontSpec.FontColor = Color.Olive;
        }
        private void newGraphicToolStripMenuItem_Click(object sender, EventArgs e)
        {
            GraphPane pane = Graphics.GraphPane;//получим панель для рисования
            // Размеры шрифтов для разных элементов графика
            SettingOfPane(pane);
            pane.CurveList.Clear();// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
            PointPairList list = new PointPairList();//создаем объект шаблонного класса PointPairList, который представляет собой список координат точек
            Random rnd = new Random();//Создаем объект шаблонного класса Random, который представляет из себя устройство для генерации последовательности случайных чисел
            // Заполняем список точек
            for (int i = 0; i < 256; i ++)
            {
                list.Add(NextInt64(rnd), NextInt64(rnd));
            }
            LineItem myCurve = pane.AddCurve("f(x)", list, Color.Blue, SymbolType.None);
            Graphics.AxisChange();
            Graphics.Invalidate();
            saveAsToolStripMenuItem.Enabled = true;
        }

        private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            GraphPane pane = Graphics.GraphPane;//получим панель для рисования
            // ДИалог выбора имени файла создаем вручную
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "*.png|*.png|*.jpg; *.jpeg|*.jpg;*.jpeg|*.bmp|*.bmp|Все файлы|*.*";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                // Получаем картинку, соответствующую панели
                Bitmap bmp = pane.GetImage();
                // Сохраняем картинку средствами класса Bitmap
                // Формат картинки выбирается исходя из имени выбранного файла
                if (dlg.FileName.EndsWith(".png"))
                {
                    bmp.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Png);
                }
                else if (dlg.FileName.EndsWith(".jpg") || dlg.FileName.EndsWith(".jpeg"))
                {
                    bmp.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                else if (dlg.FileName.EndsWith(".bmp"))
                {
                    bmp.Save(dlg.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
                }
                else
                {
                    bmp.Save(dlg.FileName);
                }
            }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

    }
}

Результаты работы программы

Комментариев нет:

Отправить комментарий