Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3 c С# и Java).doc
Скачиваний:
1
Добавлен:
17.08.2019
Размер:
85.5 Кб
Скачать

К лабораторной работе 3 по ооп Графика и потоки в языке с#. Кнопки.

Пример программы 1.

// В окне по диагонали вниз движется слово "Hello".

// При нажатии клавиши мыши движение прекращается.

using System;

using System.Drawing;

using System.Threading;

using System.Windows.Forms;

public class ThreadTest : Form

{

int x,y;

Thread thread;

bool life;

public ThreadTest()

{

Text = "Бегущая строка";

Width=500;

life=true;

x=5;

y=5;

Show();

thread= new Thread(new ThreadStart(ThreadFunc));

thread.Start();

}

protected override void OnMouseDown(MouseEventArgs args)

{

life=false;

}

protected override void OnPaint(PaintEventArgs args)

{

base.OnPaint( args );

args.Graphics.DrawString("Hello", new Font("Arial",20),

new SolidBrush(Color.Blue),x,y);

}

// Функция реакции на закрытие окна

protected override void OnClosed(EventArgs args)

{

life=false;

}

private void ThreadFunc()

{

while(life)

{

x+=5; y+=3;

Thread.Sleep(500);

Invalidate();

}

MessageBox.Show("Поток завершил работу");

}

static void Main()

{

Application.Run(new ThreadTest());

}

}

Пример программы 2.

// В окне приложения изображен квадрат и вписанный в него круг и две кнопки "Clear"

// и "Draw". При нажатии кнопки "Clear" рисунок стирается, а при нажатии "Draw" –

// восстанавливается.

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Paint

{

public class CWnd : Form

{

bool clear; //очистить окно

Rectangle rect;

Button but1,but2; // ссылки на объекты-кнопки

public CWnd()

{

Text = "Использование кнопок";

but1= new Button(); // создание

but2= new Button(); // кнопок

but1.Location= new Point(10,10);// координаты кнопки but1

but1.Size= new Size(70,30); // размер кнопки

but1.Text= "Clear"; // надпись на кнопке

but2.Location= new Point(10,50);

but2.Size= new Size(70,30);

but2.Text= "Draw";

Controls.Add(but1); // добавить кнопку к форме

Controls.Add(but2);

// Инициализация события Click для кнопок

but1.Click+=new EventHandler(ButtonClear_Click);

but2.Click+=new EventHandler(ButtonDraw_Click);

rect = new Rectangle(100,50,100,100);

clear=false;

}

//--------------------------------------

// Ф-ция реакции на нажатие кнопки Draw

void ButtonDraw_Click(Object s, EventArgs args)

{

clear=false;

Invalidate();

}

//--------------------------------------

// Ф-ция реакции на нажатие кнопки Clear

void ButtonClear_Click(Object s, EventArgs args)

{

clear=true;

Invalidate();

}

//------------------------------

// функция перерисовки окна

protected override void OnPaint(PaintEventArgs args)

{

base.OnPaint(args);

if (clear)return;

args.Graphics.DrawRectangle(new Pen(Color.Gold,10),rect);

args.Graphics.FillRectangle(new SolidBrush(Color.Black),rect);

args.Graphics.FillEllipse(new SolidBrush(Color.Red),rect);

}

//------------------------------

static void Main()

{

Application.Run(new CWnd());

}

}

}