Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник ПППН_ОАиП_Delphi_ПО_2005-2006.doc
Скачиваний:
29
Добавлен:
19.08.2019
Размер:
3.77 Mб
Скачать

Порядок выполнения

  1. Р азместите на форме компонент PaintBox, который находится на странице System палитры компонентов:

Совет: компонент PaintBox не может показывать пользователю свои границы. Поэтому попробуйте поместить его внутрь группирующей панели и выровняйте его по границе этой панели – у Вас появится рамка вокруг окна для рисования. Чтобы это выполнить, перед помещением на форму компонента PaintBox, поместите туда вначале компонент Panel со стандартной страницы палитры компонент, а уже затем, на компонент Panel поместите компонент PaintBox и установите для него свойство Align (выравнивание), например, как alTop.

  1. Для возможности закрытия вашей программы поместите на форму графическую кнопку и установите для нее соответствующие параметры (Close).

  2. Для компонента PaintBox создайте следующие обработчики событий:

Событие

Обработчик

OnMouseDown

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: MouseButton; Shift: TShiftState; X, Y: Integer);

begin

isDown:=true;

Form1.PaintBox1.Canvas.MoveTo(X,Y);

form1.Panel1.Tag:=X;

form1.Tag:=Y;

end;

OnMouseMove

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: ShiftState; X, Y: Integer);

begin

if isDown then

form1.PaintBox1.Canvas.LineTo(x,y);

end;

OnMouseUp

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: MouseButton; Shift: TShiftState; X, Y: Integer);

begin

isDown:=false;

end;

  1. Переменная isDown должна быть описана как глобальная для всего модуля в интерфейсной части в разделе var следующим образом: isDown:boolean;

  2. Сохраните ваш проект и запустите его на исполнение. Ознакомьтесь с работой программы.

  3. Закройте вашу программу и вернитесь в визуальную среду программирования.

  4. Дополните вашу форму так, как показано на рисунке:

  1. Для кнопки “Очистить область рисования” задайте обработчик события Onclick и впишите в него следующий код:

PaintBox1.Refresh;

  1. Для выбора цвета пера (компонент GroupBox1) задайте обработчик события OnExit и впишите в него следующий код:

if form1.RadioButton1.Checked then

form1.PaintBox1.Canvas.Pen.Color:=clRed;

if form1.RadioButton2.Checked then

form1.PaintBox1.Canvas.Pen.Color:=clGreen;

if form1.RadioButton3.Checked then

form1.PaintBox1.Canvas.Pen.Color:=clnavy;

  1. Для выбора цвета кисти (компонент GroupBox2) задайте обработчик события OnExit и впишите в него следующий код:

if form1.RadioButton4.Checked then

form1.PaintBox1.Canvas.Brush.Color:=clRed;

if form1.RadioButton5.Checked then

form1.PaintBox1.Canvas.Brush.Color:=clGreen;

if form1.RadioButton6.Checked then

form1.PaintBox1.Canvas.Brush.Color:=clNavy;

  1. Для кнопки “Нарисовать” задайте обработчик события OnClick следующего вида:

procedure TForm1.Button2Click(Sender: TObject);

var xn,yn,xt,yt,xprav,yprav,xlev,ylev:integer;

begin

form1.PaintBox1.Canvas.Pen.Width:=2; {Установка толщины пера в пикселях}

//

//Прямая

//

if form1.RadioButton7.Checked then

begin

//координаты начала прямой:

xn:=0;

yn:=0;

// Координаты конца прямой:

xt:=form1.PaintBox1.Width;

yt:=form1.PaintBox1.Height;

//Установка пера в точку начало рисования

form1.PaintBox1.Canvas.MoveTo(xn,yn);

//Отрисовка линии от установленного положения до конечного

form1.PaintBox1.Canvas.LineTo(xt,yt);

end;

//

//Прямоугольник

//

if form1.RadioButton8.Checked then

begin

//Координаты правого нижнего угла:

xprav:=round(form1.PaintBox1.Width/2);

yprav:=form1.PaintBox1.Height;

//координаты левого верхнего угла:

xlev:=0;

ylev:=round(form1.PaintBox1.Height/2);

//Отрисовка:

form1.PaintBox1.Canvas.Rectangle(xlev,ylev,xprav,yprav);

end;

end;

  1. Сохраните ваш проект и запустите его на исполнение. Ознакомьтесь с работой программы.

Содержание отчета

  1. Постановка задачи

  2. Тексты процедур – обработчиков событий, разработанных в приложении Delphi

Контрольные вопросы

  1. С помощью какого метода Canvas можно установить перо в заданную точку?

  2. С помощью какого метода Canvas можно провести линию от текущего положения пера до заданной точки?

  3. Как задать толщину пера?

  4. Как задать цвет пера, кисти?

  5. Как поставить точку определенного цвета на холсте?

Литература

  1. В.Попов. Паскаль и Дельфи.— СПб.: Питер, 2003.

  2. Фаронов В.В. Система программирования Delphi. – СПб.: БХВ-Петербург, 2003.