неділя, 3 грудня 2017 р.

Методи для креслення графічних примітивів

Створення графічного полотна (канви)
Встанвіть на форму компонент, на якому відображатиметься наш малюнок. Це екземпляр класу TPaintBox з розділу System.


Координатні осі та їх трансформація 
Початок координат у нашому компоненті знаходиться в лівому верхньому кутку 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)]);


Прочитейте ще тут та тут.

Немає коментарів:

Дописати коментар