
- •Курс лекцій
- •Київ-Черкаси 20010
- •1 Об‘єктно-орієнтоване програмування
- •1.1. Складові класу
- •1. Поля
- •2. Методи
- •3. Властивості
- •1.2 Оголошення класу
- •2 Огляд палітри компонентів
- •2.1 Стандартні компоненти
- •2.2 Сторінки Additional та System
- •3 Обробка виняткових ситуацій у delphi
- •Структурна обробка виняткових ситуацій
- •Модель виняткових ситуацій у Delphi
- •Синтаксис обробки виняткових ситуацій
- •Приклади обробки виняткових ситуацій
- •Виклик виняткової ситуації
- •Доступ до екземпляра об'єкта exception
- •3.4 Визначені оброблювачі виняткових ситуацій
- •3.4.1 Виключення, що виникають при роботі з базами даних
- •4 Графічні можливості delphi
- •Олівець і кисть
- •Олівець
- •Лістинг 4.1 Стилі заповнення областей
- •Вивід тексту
- •Методи креслення графічних примітивів
- •Лістинг 4.2 Осі координат і оцифрована сітка
- •Ламана лінія
- •Лістинг 4.3 Графік функції (використання методу Polyline)
- •Лістинг 4.4 Креслення замкнутого контуру (зірки) у точці натискання кнопки миші
- •Окружність і еліпс
- •Прямокутник
- •Багатокутник
- •Лістинг 4.5. Графік функції
- •Вивід ілюстрацій
- •Лістинг 10.6 Слайд-проектор
- •Бітові образи
- •Лістинг 4.7. Використання бітових образів
- •5 Робота з базами данних в delphi
- •Властивість sql
Методи креслення графічних примітивів
Будь-яка картинка, креслення, схема можуть розглядатися як сукупність графічних примітивів: точок, ліній, окружностей, дуг і ін. Таким чином, для того щоб на екрані з'явилася потрібна картинка, програма повинна забезпечити креслення (виводу) графічних примітивів, що складають цю картинку.
Креслення графічних примітивів на поверхні компонента (чи форми області виводу ілюстрації) здійснюється застосуванням відповідних методів до властивості Canvas цього компонента.
Лінія
Креслення прямої лінії здійснює метод LіnеTо, інструкція виклику якого в загальному виді виглядає в такий спосіб:
Компонент.Canvas.LineTo(x,у)
Метод LіnеTо вичерчує пряму лінію від поточної позиції олівця в крапку з координатами, зазначеними при виклику методу.
Початкову крапку лінії можна задати, перемістивши олівець у потрібну точку графічної поверхні. Зробити це можна за допомогою методу MoveTo (x,y: integer), указавши як параметри координати нового положення олівця.
Вид лінії (колір, товщина і стиль) визначається значеннями властивостей об'єкта Реn графічної поверхні, на якій викреслюється лінія.
Досить часто результати розрахунків зручно представити у виді графіка. Для більшої інформативності і наочності графіки зображують на фоні координатних осей і оцифрованої сітки. У лістингу 4.2 приведений текст програми, що на поверхню форми виводить координатні осі й оцифровану сітку (мал. 4.4).
Рис. 4.4 Форма додатка Координатна сітка
Лістинг 4.2 Осі координат і оцифрована сітка
unit grid_;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
var
x0,y0:integer; // координати початку координатних осей
dx,dy:integer; // крок координатної сітки (у пикселах)
h,w:integer; // висота і ширина області виводу координатної сітки
х,у:integer;
lx,ly:real; // мітки (оцифровка) ліній сітки по X і Y
dlx,dly:real; // крок міток (оцифровки) ліній сітки по X і Y
cross:integer; // лічильник неоцифрованих ліній сітки
dcross:integer;// кількість неоцифрованих ліній між оцифрованими
begin
х0:=40; у0:=220; // осі починаються в точці (40,250)
dx:=40; dy:=40; // куля координатної сітки 40 пикселов
dcross:=1; // позначати лінії сітки X: 1 — кожну;
// 2 — через одну;
// 4 — через дві;
dlx:=0.5; // крок міток осі X
dly:=1.0; // крок міток осі Y, мітками будуть: 1, 2, 4 і т.д.
h:=200; w:=400;
with forml.Canvas do begin
cross:=dcross;
MoveTo(x0,v0); LineTo(x0,y0-h); // вісь X
MoveTo(x0,y0); LineTo(x0+w, y0); // вісь Y
// зарубки, сітка й оцифровка по осі X
x:=x0+dx;
lx:=dlx;
repeat
MoveTo(x,y0-4);LineTo(x,y0+4); // зарубка
cross:=cross-l;
if cross = 0 then // оцифровка
begin
TextOut(x-8,y0+5,FloatToStr(lx));
cross:=dcross ; end;
Pen.Style:=psDot;
MoveTo(x,y0-4);LineTo(x,y0-h); // лінія сітки
Pen.Style:=psSolid;
lx:=lx+dlx;
x:=x+dx;
until (x>x0+w);
// зарубки, сітка й оцифровка по осі Y
y:=y0-dy;
ly:=dly;
repeat
MoveTo(х0-4,у);LineTo(х0+4,у); // зарубка
TextOut(х0-20,у,FloatToStr(1у)); // оцифровка
Pen.Style:=psDot;
MoveTo(х0+4,у); LineTo(x0+w,у); // лінія сітки
Pen.Style:=psSolid;
y:=y-dy;
ly:=ly+dly; until (y<y0-h);
end;
end;
end.
Особливість приведеної програми полягає в тім, що вона дозволяє задавати крок сітки й оцифровку. Крім того, програма дає можливість оцифровувать не кожну лінію сітки осі х, а через одну, дві, три і т.д. Зроблено це для того, щоб запобігти можливі накладення зображень чисел оцифровки один на одного у випадку, якщо ці числа складаються з декількох цифр.