Створення графічного полотна (канви)
Встанвіть на форму компонент, на якому відображатиметься наш малюнок. Це екземпляр класу TPaintBox з розділу System.
Встанвіть на форму компонент, на якому відображатиметься наш малюнок. Це екземпляр класу TPaintBox з розділу System.
Координатні осі та їх трансформація
Початок координат у нашому компоненті знаходиться в лівому верхньому кутку PaintBox. При потребі їх можна трансформувати (перетворити) використовуючи способи, описані на цьому уроці.
Пера для малювання та пензлі для замальовування
Фігури, які малюються в PaintBox можуть бути як заповнені, так і ні. Заповнені малюються олівцем та пензлем, незапоснені - олівцем.
Фігури, які малюються в PaintBox можуть бути як заповнені, так і ні. Заповнені малюються олівцем та пензлем, незапоснені - олівцем.
Перед малюванням слід встановити власивості для даних інструментів.
Олівець використовується для викреслювання крапок, ліній, контурів геометричних фігур: прямокутників, кіл, еліпсів, дуг і ін. Вид лінії, яку залишає олівець на поверхні полотна, визначають властивості об'єкту TPen , які перераховані в таблиці.
Властивості об'єкту TPen (олівець)
Властивість
|
Визначає
|
Color
|
Колір лінії
|
Width
|
Товщину лінії
|
Style
|
Вид лінії
|
Mode
|
Режим відображення
|
Детальніше тут.
Пензль
Пензлик (canvas.Brush) використовується методами, що забезпечують викреслювання замкнутих областей, наприклад геометричних фігур, для заливки (зафарбовування) цих областей. Пензль, як об'єкт, володіє двома властивостями.
Властивості об'єкту ТВrush (пензль)
Властивість
|
Визначає
|
Color
|
Колір зафарбовування (заливки) замкнутої області
|
Style
|
Стиль (тип) заповнення області
|
Область усередині контура може бути зафарбована або заштрихована. В першому випадку область повністю перекриває фон, а в другому — крізь незаштриховані ділянки області буде видний фон.
Як значення властивості Color можна використовувати будь-яку з констант типу TColor.
Детальніше тут.
Значення властивості Brush, style визначають тип зафарбовування
Константа
|
Тип заповнення (заливки) області
|
bsSolid
|
Суцільна заливка
|
bsClear
|
Область не зафарбовується
|
bsHorizontal
|
Горизонтальне штрихування
|
bsVertical
|
Вертикальне штрихування
|
bsFDiagonal
|
Діагональне штрихування з нахилом ліній вперед
|
bsBDiagonal
|
Діагональне штрихування з нахилом ліній назад
|
bsCross
|
Горизонтально-вертикальне штрихування, в клітинку
|
bsDiagCross
|
Діагональне штрихування, в клітинку
|
Приклад встановлення червоного кольору пензля з суцільною заливкою
PaintBox1.Canvas.Brush.Color := clRed;
PaintBox1.Canvas.Brush.Style := bsSolid;
Приклад встановлення синього кольору олівця з суцільною лінією та товщиною в 2 пікселя
PaintBox1.Canvas.Pen.Color := clBlue;
PaintBox1.Canvas.Pen.Width :=2;
PaintBox1.Canvas.Pen.Style :=psSolid;
Уведення тексту до PaintBox
PaintBox1.Canvas.TextOut(10,10,'Текст для виводу');
Ця команда виведе до точки з координатами (10;10) рядок 'Текст для виводу'.
Приклад встановлення характеристик для виводу тексту:
PaintBox1.Canvas.Font.Name :='Arial';
PaintBox1.Canvas.Font.Size :=14;
PaintBox1.Canvas.Font.Color :=clGreen;
Малювання прямої
PaintBox1.Canvas.MoveTo(0,0);
PaintBox1.Canvas.LineTo(40,40);
Перша команда встановить олівець у точку з координатою (0;0), а друга - проведе відрізок до точки з координатами (40;40).
Колір, товщина та тип лінії будуть такими, які були встановлені попередніми командами.
Малювання еліпса та замальованого еліпса
PaintBox1.Canvas.Brush.Color := clBlue;
PaintBox1.Canvas.Brush.Style := bsClear;
PaintBox1.Canvas.Ellipse( 20, 20, 40, 50);
PaintBox1.Canvas.Brush.Style := bsSolid ;
PaintBox1.Canvas.Ellipse( 120, 120, 40, 50);
Малювання сектора
PaintBox1.Canvas.Brush.Color := clRed;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Pie(70, 90, 130, 150, 100, 90, 130,120 );
Пояснення
Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) - малює сектор еліпса, вписаного в прямокутник з координатами (X1, Y1) і (X2, Y2). Сектор визначається двома радіусами еліпса, що проходять через точки (X3, Y3) і (X4, Y4). Сенс параметрів пояснює малюнок:
Малювання дуги
PaintBox1.Canvas.Arc(70, 90, 130, 150, 100, 90, 130,120 );
Малювання прямокутника та замальованого прямокутника
PaintBox1.Canvas.Pen.Color := clRed;
PaintBox1.Canvas.Rectangle( 20, 20, 60, 70);
PaintBox1.Canvas.Pen.Color := clBlue;
PaintBox1.Canvas.Brush.Color := clBlue;
PaintBox1.Canvas.Rectangle( 100, 80, 160, 170);
Малювання багатокутника (не зафарбованого та зафарбованого)
//Малювання незафарбованого багатокутника
PaintBox1.Canvas.Polygon([Point(100,20),Point(200,20),Point(150,120),Point(50,120)]);
//Малювання зафарбованого багатокутника
PaintBox1.Canvas.Pen.Color := clRed;
PaintBox1.Canvas.Brush.Color := clRed;
PaintBox1.Canvas.Polygon([Point(300, 120),Point(400, 120),Point(350, 220),Point(250, 220)]);
Немає коментарів:
Дописати коментар