К лабораторной работе 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());
}
}
}