697

Использование графики в приложениях Windows Forms

Лабораторная работа

Информатика, кибернетика и программирование

Разработать приложение с графическим интерфейсом пользователя, которое позволяет рисовать заданную геометрическую фигуру в клиентской области главного окна, строит и отображает график заданной функции

Русский

2013-01-06

108 KB

30 чел.

МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ УКРАИНЫ

ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра информационных систем

Отчёт

по лабораторной работе №4

по курсу: «Объектно-ориентированное программирование»

по теме: «Использование графики в приложениях Windows Forms»

Выполнил:

студент 2 курса 5 группы

факультета ЭИ

Нгуен Вьет Дык

Проверил:
доцент кафедры ИС

Лосев М.Ю.

2012

Содержание

Условие задания---------------------------------------------------------------------------3

UML- Диаграмма--------------------------------------------------------------------------3

Задача

Исходный код программы --------------------------------------------------------------3

Примеры результатов работы программы на тестовых исходных данных----7

Вывод----------------------------------------------------------------------------------------7


Условие задания.

Варіант 14

Задание 1.

Разработать приложение с графическим интерфейсом пользователя, которое позволяет рисовать заданную геометрическую фигуру в клиентской области главного окна.

Сектор. Одинарный клик правой кнопкой мыши.

Задание 2.

Разработать приложение с графическим интерфейсом пользователя, которое строит и отображает график заданной функции.

Ctg(x), где х = от 0 до 180.

UML – Диаграмма

Исходный код программы

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 System.Collections;

using System.Drawing.Drawing2D;

namespace lr4

{

   public partial class MY_LR : Form

   {

     

       Dictionary<double, double> f1 = new Dictionary<double, double>();

       ArrayList points = new ArrayList();

       

       Pen pen = new Pen(Brushes.Red);

       double xmax = 180, x0 = 0;

       SolidBrush peen = new SolidBrush(Color.Green);

     

       public MY_LR()

       {

           InitializeComponent();

           

           for (double x = x0; x <= xmax; x += 1)

               f1.Add(x, (System.Math.Atan(x)));

           chart1.Series[0].Points.DataBindXY(f1.Keys, f1.Values);

           chart1.Series[0].LegendText = "функция ctg(x)";

       }

     

       private void Form1_Paint(object sender, PaintEventArgs e)

       {

           Graphics g = e.Graphics;

           pen.Width = 3;

         

           float startAngle = 0.0F;

           float sweepAngle = 275.0F;

           foreach (Point p in points) {

               

               Rectangle rect = new Rectangle(p.X, p.Y, 100, 50);

               e.Graphics.DrawPie(pen, rect, startAngle, sweepAngle);

               e.Graphics.FillPie(peen, rect, startAngle, sweepAngle);

       }

       }

       

       private void t1_Click(object sender, EventArgs e)

       {

           chart1.Visible = false;

           domainUpDown1.Visible = true;

           

           label1.Visible = true;

           label2.Visible = true;

           button2.Visible = true;

           panel1.Visible = false;

       }

     

       private void t2_Click(object sender, EventArgs e)

       {

           chart1.Visible = true;

           domainUpDown1.Visible = false;

           

           label1.Visible = false;

           label2.Visible = false;

           button2.Visible = false;

           panel1.Visible = true;

       }

    

       private void button1_Click_1(object sender, EventArgs e)

       {

           f1.Clear();

           x0 = Convert.ToDouble(numericUpDown1.Text);

           xmax = Convert.ToDouble(numericUpDown2.Text);

           if (x0 > xmax) { MessageBox.Show("Zadayte pravil'no interval", "!", MessageBoxButtons.OK); return; }

           for (double x = x0; x <= xmax; x += 1)

               f1.Add(x, ((System.Math.Atan(x))));

           chart1.Series[0].Points.DataBindXY(f1.Keys, f1.Values);

           chart1.Series[0].LegendText = "функция ctg(x)";

           if (comboBox2.Text == "Золотой")

           {

               chart1.Series[0].Color = Color.Gold;

           }

           if (comboBox2.Text == "Зеленый")

           {

               chart1.Series[0].Color = Color.Green;

           }

           if (comboBox2.Text == "Синий")

           {

               chart1.Series[0].Color = Color.Blue;

           }

           chart1.Series[0].BorderWidth = Convert.ToInt32(numericUpDown3.Value);

       }

       private void MY_LR_MouseClick(object sender, MouseEventArgs e)

       {

           if (e.Button == MouseButtons.Right)

           {

               Point p = new Point();

               p.X = e.X - 51;

               p.Y = e.Y - 23;

               points.Add(p);

           }

           Invalidate();

       }

       private void Z(object sender, EventArgs e)

       {

           if (domainUpDown1.Text == "Красный")

               pen.Color = Color.Red;

           if (domainUpDown1.Text == "Синий")

               pen.Color = Color.Blue;

           if (domainUpDown1.Text == "Черный")

               pen.Color = Color.Black;

           if (domainUpDown1.Text == "Серый")

               pen.Color = Color.Gray;

           if (domainUpDown1.Text == "Желтый")

               pen.Color = Color.Yellow;

       }

       private void button2_Click(object sender, EventArgs e)

       {  

           if (colorDialog1.ShowDialog() == DialogResult.OK)

           {              

               peen.Color = colorDialog1.Color;               

           }

       }

      

       }

           }

                

       

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

Вывод: В ходе данной лабораторной работы усовершенствовал практические навыки разработки интерфейса пользователя с помощью WindowsForms, приобрела практические навыки использования библиотечных классов для работы с графикой, усовершенствовала навыки работы с интегрированной средой MS Visual Studio.


 

А также другие работы, которые могут Вас заинтересовать

35265. Тема. Знаходження коренів нелінійного рівняння ітераційним методом. 89 KB
  Знаходження коренів нелінійного рівняння ітераційним методом. Мета: навчитися вирішувати нелінійні рівняння методом ітерацій скласти програму. Дано рівняння fx=0 де fx безперервна функція. Замінимо рівняння fx=0 рівносильним йому рівнянням х= х де= xq 1.
35266. Тема. Знаходження значення інтеграла по формулам НьютонаКотеса. 28.5 KB
  h void min {double bhSI; int in; cout Vvedite bn n ; cin b n; doublex=new double[n]; doubley=new double[n]; doubleH=new double[n]; h=b n; x[0]=; fori=0;i =n;i {x[i]=x[0]ih; y[i]=1 sqrt2x[i]x[i]3; } switchn {cse 4:{H[0]=0.
35267. Тема. Знаходження інтеграла за формулами прямокутників. 24 KB
  h void min {double bhSI; int in; cout Vvedite bn n ; cin b n; doublex=new double[n]; doubley=new double[n]; h=b n; x[0]=; fori=0;i =n;i {x[i]=x[0]ih; y[i]=1 sqrtx[i]x[i]1; } S=0.
35268. Тема. Знаходження інтегралу за формулами трапецій. 47.5 KB
  Знаходження інтегралу за формулами трапецій. навчитися знаходити значення інтегралу за формулами трапецій. Дан інтеграл число розбивок формула трапецій Оцінка похибки: де 12.
35269. Метод Гауса рішення системи лінійних рівнянь складання алгоритму 34.5 KB
  Поставте задачу розв’язання системи лінійних рівнянь методом Гауса. Яка умова застосування методу Гауса. Скільки етапів вирішення системи лінійних рівнянь методом Гауса. Що називають прямим та зворотнім ходом методу Гауса...
35270. Тема. Знаходження інтегралу за формулами трапецій. 181 KB
  h void min {double bhSynI; int ni; cout Vvedite nijnii predel : ; cin ; cout Vvedite verhnii predel b: ; cout Vvedite verhnii predel b: ;; cin b; cout Vvedite n: ; cin n; doublex=new double [n]; doubley=new double [n]; h=b n; S=0; x[0]=; fori=1;i =n1;i {x[i1]=x[0]ih; y[i]=1 pow3x[i]x[i]0.5; S=Sy[i]; I=b nSy[0]y[n] 2; cout I= I; } } .
35271. Тема. Знаходження інтегралу за формулами трапецій. 22.5 KB
  h void min { int n; double bhT ; cout Enter bn n ; cin b n; h=b n; doublex=new double[n]; x[0]=; forint i=0;i =n;i {x[i]=x[0]ih;} doubley= new double [n]; for i=0; i =n; i { y[i]=1 sqrtx[i]x[i]0.
35272. Тема. Обчислення інтегралу по формулі Сімпсона. 26 KB
  Обчислення інтегралу по формулі Сімпсона. Навчитися обчислювати інтеграл по формулі Сімпсона; склаcти алгоритм. Обчислити інтеграл по формулі Сімпсона при заданому значенні 16 include iostrem. Які проста та узагальнена формули Сімпсона Сформулюйте ідею методу Якою повинна бути розбивка відрізку на частини Яка оцінка похибки методу Сімпсона Який ступінь точності методу Який звязок формули Сімпсона та НьютонаКотеса .
35273. Тема. Метод Крилова побудови власного багаточлена матриці. 36 KB
  h void min { int klj; double [3][3]b[3][3]y0[3]y1[3]y2[3]y3[3]y4[3]yn1yn2yn3yn4Sum1Sum2Sum3Sum4; double x1x2x3x4d0d1d2d3102030213132; cout Vvedite mtritsy endl; fork=0;k =3;k { forl=0;l =3;l cin b[k][l]; } cout Vvedite nylevou vektor endl; fork=0;k =3;k cin y0[k]; fork=0;k =3;k { forl=0;l =3;l { yn1=b[k][l]y0[l]; Sum1=Sum1yn1; } y1[k]=Sum1; } fork=0;k =3;k { forl=0;l =3;l { yn2=b[k][l]y1[l]; Sum2=Sum2yn2; } y2[k]=Sum2; } fork=0;k =3;k {...