Извеждане на текст в графичен режим

ЧАСТ 1

§4.1 Свойство на Canvas

Delphi ви позволява да разработвате програми, които могат дапоказват графики: диаграми, рисунки, илюстрации, да създавате свои собствени изображения или да включвате готови графични файлове в програмата.

СвойствотоCanvas се използва за създаване наваши собствениграфики. Delphi обекти катоShapes,Image,BitMap имат това свойство. За да покажете графични елементи (права линия, кръг, правоъгълник и т.н.), трябва да приложите подходящия метод към свойствотоCanvas на този обект. Свойствата ви позволяват да зададете характеристиките на графичните изображения: цвят, дебелина и стил на линиите; цвят и вид на запълващите зони; характеристики на шрифта при показване на текстова информация.

Canvas се превежда от английски като "платно", "платно за рисуване".Платното се състои от отделни точки - пиксели. Позицията на пиксел се характеризира с неговите хоризонтални (X) и вертикални (Y) координати.Горният ляв пикселима координати (0, 0) и се намира в горния ляв ъгъл на компонента. Координатите се увеличават отгоре надолу и отляво надясно, т.е. ако оста X е насочена отляво надясно, както се приема при конструирането на математически графики, тогава оста Y е отгоре (Y = 0) надолу (Y се увеличава). Стойностите на координатите на долната дясна точка на платното зависят от размера на платното. Например, ако рисувате върху форма, това е нейната ширина и височина.

Когато започнем да рисуваме, вземаме молив и рисуваме контура на рисунката върху хартия, след което рисуваме върху изображението с четка или флумастер. Подобен подход се прилага при използване на свойствотоcanvas.

Молив (Химикал ), използванза рисуванелиниии пътеки върху платното ичетка (Четка ) -за рисуване на зони, ограничени от пътеки. Ако за тях не са зададени свойства, тогава чертежът се създава с черен молив с дебелина един пиксел и се запълва с бяло.

За да зададете цвета на молив, използвайте неговото свойство цвят (Color ).

Pen.Color - Указва цвета, използван за изображението. За да промените цвета, използвайте оператора Canvas.Pen.Color := rgb(255,0,0), където цветовете се избират чрез RGB технология. В нашия пример е избран червен молив.

Когато създавате изображение, първо задайте цвета и, ако е необходимо, дебелината на молива и след това рисувайте.

Линиите могат да бъдат плътни или съставени от точки и тирета.

Pen.Style - Определя стила, с който се изчертават линиите и има следните опции:

psSolid — Плътна линия;

psDash — Линия от поредица от прекъсвания;

psDot — Линия от точки;

psDashDot — Линия от прекъсвания и точки;

psDashDotDot — Линия като точка, точка, празнина;

psClear —Линията не е начертана.

Например Canvas.Pen.Style := psDashDotDot; определя изображението на фигура с молив под формата на две точки и празнина.

Моливът може да бъде дебел или тънък.

Ако стойността на свойствотоCanvas.Pen.width е по-голяма от единица, пунктираните линии ще бъдат начертани като плътни линии.

СвойствотоЧетка ви позволява да запълвате области с цвят и щриховка, включително вътрешността на фигурите.

Canvas.brush.color:=rgb(0,255,0); указва зеления цвят, който запълва формата.

Brush.Style задава типа щриховка.

Възможните опции за запълване на области са показани на Фигура 4.1.

Фигура 4.1 - Задаване на стилове на щриховкапри запълване на площи

извеждане
Инструкция Canvas.brush.style := bsDiagCross; задава зоната за запълване в мрежов модел, Canvas.brush.style := bsVertical; запълва областта с вертикални линии.

Един от начините за създаване на изображения е да рисувате с пиксели. Всяка точка (пиксел) се характеризира с координати и цвят, Canvas оператор. Пиксели[X,Y]:= rgb(0,0,0) ; определя точка с координати X и Y с черен цвят, където X е хоризонталният брой пиксели, а Y е вертикалният брой пиксели.

Фигура 4.2 показва различни опции за запълване на области на компонента Изображение с пиксели. По-долу е текстът на програмата.

процедура TForm1.Button1Click(Подател: TObject);

с image3.Canvas наистина започва Рисуването се случва в обект Image >

f:=0; i:=0 ; Попълване на област 1 с цвят, Фиг.4.2>

докато i 17 тогава k:=0; j:=j+1;

ако f>17 тогава f:=0; край;

докато j

текст
canvas.ellipse(200,100,300,300);Canvas.Brush.Style:=bsCross; Canvas.Brush.color:=rgb(0,0,0); canvas.rectangle(200,100,300,250);Canvas.brush.style:=bsdiagcross; Canvas.Brush.color:=rgb(0,0,0); Canvas.RoundRect(100,100,200,150,50, 50);Canvas.Brush.Color := clTeal; Canvas.Polygon([Точка(150, 50), Точка(120, 80), Точка(140,80), Точка(90,110), Точка(140, 110), Точка(60,140), Точка(240,140), Точка(160,110), Точка(210,110), Точка(160, 80), Точка(180, 80)]);
графичен
Canvas.Brush.Color := clTeal; Canvas.Pen.Color:=rgb(0,0,0); Canvas.Pen.W >Canvas.brush.style:=bsdiagcross; Canvas.brush.color:=rgb(128,128,128); за i:=0 до 5 направиСanvas.Pie(200+i*10,300+i*10,300+i*10,400+i*10,300+i*10,350+i*10,200+i*10,350+i*10);canvas.chord(200,200,400,400,100,415, 500,445);ОпресняванеПочистване на екрана

Друг пример за чертане на линии е показан по-долу. Програмата има цикъл, който позволява с помощта на оператораCase да сортирате възможните опции за стила на молива. Начертани са пет линии с единична дебелина, вертикално изместени с 40 пиксела една спрямо друга.

процедура TForm1.N12Click(Подател: TObject);

текст
започнете за i:=0 до 4 започнете

0: Canvas.Pen.Style := psSolid;

1: Canvas.Pen.Style := psDash;

2: Canvas.Pen.Style := psDot;

3: Canvas.Pen.Style := psDashDot;

Платно. lineto(150, 50+i*40);

За да покажете дъги, използвайте свойствотоArc с параметри (X1, Y1, X2, Y2, X3, Y3, X4, Y4);

Arc чертае дъга, която е част от елипса, ограничена от точки (X1,Y1) и (X2,Y2). Дъгата се изчертава обратно на часовниковата стрелка от началната точка, която се определя от пресечната точка на елипсата и точката (X3,Y3) и крайната точка (X4, Y4). В ред 2 на таблица 4.1. показан е пример за изграждане на дъга, правоъгълникът, в който се вписва елипсата, е показан като пунктирана линия.

Ред 3 на таблица 4.1 показва пример за конструиране на елипса.Canvas.Ellipse (X1, Y1, X2, Y2) чертае кръг или елипса, която се вписва в правоъгълник с координати горе вляво (X1, Y1) и долу вдясно (X2, Y2). Ако точките на правоъгълника образуват квадрат, се очертава кръг.

За да рисувате правоъгълници и квадрати, използвайтеCanvas. Правоъгълник (X1, Y1, X2, Y2), освен това, координатата на горната лява точка (X1, Y1) и долната дясна точка (X2, Y2) (ред 4 на таблица 4.1).

Да сеначертайте заоблен правоъгълник, използвайте методаRoundRect (X1, Y1, X2, Y2, R1,R2). Първите четири параметъра, предадени наRoundRect, са координатите на правоъгълника, следващите два параметъра показват как да се визуализират заоблените ъгли.

Ред 5 на таблица 4.1 показва заоблен правоъгълник със заоблени ъгли като секции от кръг с диаметър R1=R2=50 пиксела.

Прекъсната затворена линия може да бъде начертана с помощта на методаPolygon ([Point(x1, y1), Point(x2, y2), Point(x3, y3), .Point(xn, yn)]). Точка определя координатите на точките, включени в линията. Ако изображение е създадено с Lineto, тогава вътрешността му не може да бъде боядисана с помощта на Brush.color. Методът Polygon ви позволява да зададете засенчването на вътрешността на изображението. Ред 6 на таблица 4.1 показва нарисувано коледно дърво с даден цвят.

МетодPolyline ([Point(x1, y1), Point(x2, y2), Point(x3, y3), .Point(xn, yn)]) има същите параметри, но вътрешната част на изображението не е боядисана (вижте ред 7 на таблица 4.1). Въпреки че цветът е зададен в кодираната част на програмата, нарисуваната звездичка има само черен контур, вътрешността на изображението остава бяла.

Част от елипса може да бъде начертана с помощта на методаPie (X1, Y1, X2, Y2, X3, Y3, X4, Y4); където X1, Y1, X2, Y2 са координатите на правоъгълника, в който е вписана елипсата, X3, Y3, X4, Y4 са координатите на точките, където са начертани радиусите. Ред 8 на таблица 4.1 показва вариант на изграждане на шест части в цикъл наведнъж.

МетодътХорда (X1, Y1, X2, Y2, X3, Y3, X4, Y4) се използва за създаване на затворени фигури, ограничени от елипса с координати (X1, Y1, X2, Y2) и линия (X3, Y3, X4, Y4), вижте ред 9 на таблица 4.1.

Нека да разгледаме използването на свойството Canvas с примери. Помислете за програма, която го прависледните функции:

ü Когато таймерът е активиран, кръг с произволни координати се рисува на всеки пет милисекунди.

ü Ако броят на начертаните кръгове е повече от 350, тогава интервалът на таймера се увеличава и радиусът на начертаните кръгове се увеличава. Ако търсите аналогия, тогава можете да си представите, че в началото има малък, бърз сняг. И тогава големите снежинки падат все по-бавно. Ако броят на изображенията надвишава 350, екранът се изчиства.

ü Изборът на стил и цвят е произволен.

процедура TForm1.Timer1Timer(Подател: TObject);

Var X, Y, S, R: Цяло число;

Таймер1.Интервал := 5; рандомизирам;

графичен
k:=k+1;

ако k>350 тогава започва k:=0;опресняване; край

в противен случай, ако k>250, тогава започнете

таймер1.Интервал:=10; s:=20; край;

X:= Произволен (form1.Width - 200);

Y:= Random(form1.Height - 200);

Canvas.Pen.Color := Rgb(0,0,0); Canvas.Pen.w >

if k mod 3=0 тогава Canvas.brush.Color:=rgb(255,0,0)

иначе, ако k mod 3=1 тогава Canvas.brush.Color:=rgb(0,255,0)

1: Canvas.brush.style := bsSolid ;

2: Canvas.brush.style := bsClear ;

3: Canvas.brush.style := bsHorizontal ;

4: Canvas.brush.style := bsVertical ;

5: Canvas.brush.style := bsFDiagonal ;

6: Canvas.brush.style := bsBDiagonal ;

7: Canvas.brush.style := bsCross ;

8: Canvas.brush.style := bsDiagCross ; край;

Canvas.ellipse(X, Y, X + r, y+r);

Друга програма показва изображение на няколко правоъгълника с различни видове запълване. Всеки правоъгълник е заобиколен от черна линия с дебелина шест.

procedure TForm1.N10Click(Sender: TObject);

var i:integer;

за i:=1 до 8 започнете

1: Canvas.brush.style := bsSolid ;

2: Canvas.brush.style := bsClear ;

3: Canvas.brush.style := bsHorizontal ;

4: Canvas.brush.style := bsVertical ;

5: Canvas.brush.style := bsFDiagonal ;

6: Canvas.brush.style := bsBDiagonal ;

7: Canvas.brush.style := bsCross ;

8: Canvas.brush.style := bsDiagCross ; край;

Текстов изход в графичен режим

За показване на текст върху повърхността на графичен обект се използва методът TextOut. Операторът за извикване на метода TextOut най-общо изглежда така: