Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования в Delphi. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Основы программирования в Delphi
3. Необходимо также обрабатывать событие OnDragDrop. В ходе обра-
ботки, для исходной кнопки (параметр Source, приведенный к типу TButton с
помощью операции as) задаются новые координаты ее местоположения на
форме (свойства Left и Top).
procedure TForm1.FormDragDrop (Sender, Source: TObject; X, Y: Integer);
begin
(Source as TButton). Left: = X;
(Source as TButton). Top: = Y;
end;
В конце заметим, что дополнительно событиям OnDragOver и OnDragDrop, могут быть созданы обработчики еще двух событий (необяза-
тельных):
- OnStartDrag – начат процесс перемещения объекта: пользователь нажал и
удерживает левую кнопку мыши;
- OnEndDrag – процесс перемещения и сброса объекта завершен.
В обработчиках этих событий могут быть реализованы дополнительные требования к перемещению.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Для чего используются в программах компоненты Флажок и Радиокнопка?
2. Перечислите их основные свойства.
3. Что из себя представляет компонент RadioGroup?
4. Как создается главное меню приложения в Delphi?
5. Какие диалоговые окна ввода-вывода можно создавать в Delphi?
6. Перечислите основные события мыши.
7. В чем состоит суть механизма drag and drop?
ВИДЕО-УРОК 6
https://youtu.be/xiaGPjEDjdc
101
Основы программирования в Delphi
Свойство
Назначения
ClipRect
Область холста, которая реально отрисовывается. Обычно эта область совпадает с клиентской обла-
стью. В ряде случаев за счет ограничения области вывода небольшим прямоугольником, удается значи-
тельно повысить скорость отображения информа­ции.
PenPos
Текущая позиция графического курсора (тип TPoint).
Метод
Назначение
procedure MoveTo(x, y: Integer);
Устанавливает текущую позицию гра-
12. РАБОТА С ГРАФИКОЙ В DELPHI
12.1 Использование канвы
Вся технология вывода графической информации на экран основывается на понятии канвы (Canvas). По умолчанию, область канвы совпадает с клиент­ской областью формы или элемента управления. Эта область представляет со-
бой ту часть объекта, которая не занята какими-то вспомогательными деталями
оформления (например, заголовком окна, строкой меню, панелью командных
кнопок), недоступными для вывода на них графической информации.
На канву можно обращаться как к свойству формы (или элемента управле-
ния). Например, на канву формы Form1 можно обращаться так:
Form1.Canvas
а на канву элемента управления Image1 (панель компонентов Дополнительные) можно обращаться так:
Image1. Canvas
Канва является объектом класса TCanvas и, следовательно, имеет соб-
ственные свойства и методы. Ниже приведены самые важные свойства класса TCanvas, которые активно используются в процессе вывода графической ин­формации.
Методы канвы позволяют рисовать различные геометрические фигуры:
линии, дуги, эллипсы и т.д.
102
Основы программирования в Delphi
фического курсора в точку, с координа­тами x, y
procedure LineTo(x, y: Integer);
Рисует линию от текущей точки до точки, с координатами x, y
procedure Rectangle (const Rect: Trect);
Рисуется прямоугольник, его внутренняя область заполняется в соответствии со значением свойства Brush
procedure Ellipse (const Rect: TRect);
Рисуется эллипс
procedure TextOut (x, y: Integer; const Text: String);
Вывод строки в конкретную позицию канвы
Свойство
Назначение
Color
Цвет карандаша
Style
Стиль линии определяет, будет ли она сплошной или пунктирной
Полный список методов можно найти в учебниках по Delphi. Обращение
к этим методам происходит аналогично обращению к методам класса. Напри-
мер,
X:=0; Y:=0; // Координаты левого верхнего угла формы Form1.Canvas. MoveTo (X, Y); // Устанавливаем графический курсор // на точку X=0, Y=0
X:=Form1.Width; // Координаты правого нижнего угла Y:=Form1.Height; Form1.Canvas. LineTo(X, Y); Form1.Canvas.TextOut (0, 100, 'Я учусь на факультете математики и
информатики НИСПТР'); // Вывод текста
Этот фрагмент программы построит линию от левого верхнего угла до
нижнего правого угла формы. Затем выводится текст, начиная с точки с коор­динатами (0, 100).
Определение текущего цвета, толщину и типа линий, текущего шрифта и
характеристик шрифта выполняется за счет использования свойств канвы,
определенных в виде классов.
Свойство Pen (класс TPen) – предназначен для определения текущих ха-
рактеристик линии. Этот класс имеет следующие основные свойства:
103
Основы программирования в Delphi
Width
Толщина линии в пикселях
Mode
Режим рисования определяет, в частности, способ комбинирования своего цвета с текущем цветом хол­ста
К этим свойствам обращаются также как и другим свойствам формы. Но в данном случае выражение получается «многоэтажным». Например,
Form1.Canvas.Pen.Color:= clBlue;
Form1.Canvas.Pen.Width:= 15;
В этом фрагменте программы определяется текущий цвет и ширина линии.
Все линии, рисуемые после этих выражений, будут синего цвета, а толщина ли­нии 15 пикселей.
Свойство Font (класс TFont) – с помошью свойств класса TFont можно
определить новый шрифт, высоту шрифта и других характеристик шрифта.
Например,
Form1.Canvas.Font.Size:= 12; // Высота шрифта Form1.Canvas.Font.Color:=clGreen; // Цвет шрифта
Свойство Brush (класс TBrush). Свойства этого класса предназначены
для заполнения сплошных областей формы в соответствии с заданным шабло-
ном. Например, после выполнения выражений:
Form1.Canvas.Brush.Color:= clGreen;
Form1.Canvas.Rectangle(50,50,200,200);
на форме появится зеленый прямоугольник c координатами диагонально
противоположных углов: (150, 150) и (200, 200).
Помимо свойств Color и Style, в класс TBrush добавлено новое свойство Bitmap , которое позволяет заполнить область заранее подготовленным точеч­ным изображением.
В конце расмотрим небольшой пример, который демонстрирует возмож-
ности Delphi 7 по работе с графикой.
Пример. В программе имеется меню для установления цвета и толщины
линии, цвета заливки и размера шрифта. Можно задать координаты вершин для рисования эллипса и прямоугольника, а также очистить канву. Кнопка Текст позволяет вывести необходимый текст на изображении.
104
Основы программирования в Delphi
Рис. 12.1 Использование канвы в Delphi
Программный код нашего приложения выглядит следующим образом:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
edt1: TEdit;
edt2: TEdit;
lbl1: TLabel;
lbl2: TLabel;
img1: TImage;
Button1: TButton;
Button2: TButton;
105
Button3: TButton;
mm1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N11: TMenuItem;
N21: TMenuItem;
N51: TMenuItem;
N101: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Основы программирования в Delphi
N9: TMenuItem;
N10: TMenuItem;
N12: TMenuItem;
edt3: TEdit;
edt4: TEdit;
lbl3: TLabel;
lbl4: TLabel;
Button4: TButton;
N13: TMenuItem;
N14: TMenuItem;
N121: TMenuItem;
N141: TMenuItem;
N161: TMenuItem;
N181: TMenuItem;
N201: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
imesNewRoman1: TMenuItem;
imesNewRoman2: TMenuItem;
Button5: TButton;
106
Основы программирования в Delphi
edt5: TEdit;
procedure N12Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N51Click(Sender: TObject);
procedure N101Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure N121Click(Sender: TObject);
procedure N141Click(Sender: TObject);
procedure N161Click(Sender: TObject);
procedure N181Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x1,y1,x2,y2:Integer;
implementation
{$R *.dfm}
procedure TForm1.N12Click(Sender: TObject);
107
Основы программирования в Delphi
begin
Form1.Close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Color:=clRed;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Color:=clBlue;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Color:=clYellow;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Color:=clLime;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Width:=1;
end;
procedure TForm1.N21Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Width:=2;
end;
procedure TForm1.N51Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Width:=5;
108
Основы программирования в Delphi
end;
procedure TForm1.N101Click(Sender: TObject);
begin
Form1.img1.Canvas.Pen.Width:=10;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Form1.img1.Canvas.Brush.Color:=clYellow;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Form1.img1.Canvas.Brush.Color:=clLime;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Form1.img1.Canvas.Brush.Color:=clBlue;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
x1:=StrToInt(edt1.Text);
y1:=StrToInt(edt2.Text);
x2:=StrToInt(edt3.Text);
y2:=StrToInt(edt4.Text);
Form1.img1.Canvas.MoveTo(x1,y1);
Form1.img1.Canvas.LineTo(x2,y2);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
x1:=StrToInt(edt1.Text);
y1:=StrToInt(edt2.Text);
x2:=StrToInt(edt3.Text);
109
Основы программирования в Delphi
y2:=StrToInt(edt4.Text);
Form1.img1.Canvas.Ellipse(x1,y1,x2,y2);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
x1:=StrToInt(edt1.Text);
y1:=StrToInt(edt2.Text);
x2:=StrToInt(edt3.Text);
y2:=StrToInt(edt4.Text);
Form1.img1.Canvas.Rectangle(x1,y1,x2,y2);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.img1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
end;
procedure TForm1.N121Click(Sender: TObject);
begin
Form1.img1.Canvas.Font.Size:=12;
end;
procedure TForm1.N141Click(Sender: TObject);
begin
Form1.img1.Canvas.Font.Size:=14;
end;
procedure TForm1.N161Click(Sender: TObject);
begin
Form1.img1.Canvas.Font.Size:=16;
end;
procedure TForm1.N181Click(Sender: TObject);
begin
Form1.img1.Canvas.Font.Size:=18;
end;
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]