Структура на Delphi-приложение



страница3/6
Дата18.09.2016
Размер401.28 Kb.
#10237
1   2   3   4   5   6

Графики и рисуване


Когато потребителят щракне с бутона на мишката върху формата или върху компонент в нея, Windows изпраща на приложението няколко съобщения. В Delphi са дефинирани няколко събития за обработване на такива съобщения:

  • OnMouseDown

Получава се, когато е натиснат единия бутон на мишката.
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Параметърът Button показва кой от трите бутона на мишката е бил натиснат. Възможните стойности са mbRight, mbLeft, mbCenter. Shift показва кои от свързаните с мишката клавиши /Alt, Ctrl, Shift и самите бутони на мишката/ са били натиснати при генерирането на събитието. X и Y показват клиентските координати на позицията на мишката.

  • OnMouseUp

Получава се, когато е отпуснат единия бутон на мишката.

  • OnMouseMove

Получава се когато мишката се премества.

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

Пример:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

if Button=mbLeft then

Canvas.Ellipse (X-10, Y-10, X+10, Y+10);



end;

При така написаната програма има няколко проблема. Ако покриете формата с друга, която след това преместите, нарисуваното няма да остане. Ако минимизирате формата, всички окрежности ще изчезнат. Ако намалите размера на формата окръжностите извън областта на формата също ще изчезнат. Това е следствие от поведението на Windows. Когато чертае в даден прозорец, Windows не съхранява полученото изображение, за да спести памет. Ето защо, за да съхраните съдържанието на формата в bitmap изображение, е необходимо да използвате компонента Image. Съществуват методи за прерисуване на форми и контроли, като Invalidate, Update, Repaint и Refresh. Методът Invalidate информира Windows, че цялата повърхност на формата трябва да бъде прерисувана. Този метод не предизвиква веднага прерисуване на прозореца. Тъй като това е бавна операция, Windows отлага заявката до приключване на текущата процедура. Методът Update изисква незабавно прерисуване на прозореца. Тази операция се извършва само ако има невалидна област. Методът Repaint извиква последователно методите Invalidate и Update, при което се генерира събитието OnPaint. Методът Refresh е модификация на Repaint.

За да чертаем във формата използваме нейното свойство Canvas, което задава поле за рисуване. Canvas е обект от тип TCanvas. Той съдържа набор от средства за рисуване /молив, четка и шрифт/ и има методи за рисуване, които използват текущите средства за рисуване. Средствата за рисуване са GDI /Graphics Device Interface/ обекти:


  • Brush

Свойството Brush /четка/ определя цвета на областта, затворена в контур. Четката се използва за запълване на затворени фигури. Нейни свойства са Color /цвят/ и Style /стил/.

  • Pen

Свойството Pen /писалка/ определя цвета и размера на линиите и границите на геометрични обекти. Писалката има следните свойства: Color /цвят/, Width /ширина/ и Style /стил/, който включва няколко вида прекъснати линии.

  • Font

Свойството Font /шрифт/ определя шрифта, който ще се използва при извеждане на текст върху формата с помощта на метода TextOut на класа TCanvas. Шрифтът има свойства Name /име/, Size /размер/ и Style /стил/.

Можете да четете текущата позиция на писалката чрез свойството PenPos, което е от тип TPoint:

TPoint = record

X: Longint;

Y: Longint;

end;

Позицията на писалката определя началната точка на следващата линия, която ще се изчертава с помощта на метода LineTo:



procedure LineTo(X, Y: Integer);

За да промените позицията можете да използвате метода MoveTo:



procedure MoveTo(X, Y: Integer);

Цвета на всяка точка можете да получите или промените като използвате свойството Pixels:



property Pixels[X, Y: Integer]: TColor;

За да изчертаете правоъгълник, използвайте метода Rectangle:



procedure Rectangle(X1, Y1, X2, Y2: Integer);

X1 и Y1 са координатите на горния ляв ъгъл на правоъгълника, а X2 и Y2 - на долния десен ъгъл.


За да изчертаете правоъгълник със заоблени върхове, използвайте метода RoundRect:

procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer);

За да изчертаете окръжност или елипса, използвайте метода Ellipse:



procedure Ellipse(X1, Y1, X2, Y2: Integer);

Графични компоненти



  • PaintBox

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

  • Shape

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

  • Image

Компонентът Image използвайте, за да визуализирате съществуващо bitmap изображение, да го заредите от файл или да рисувате в него. Той може да зарежда файлове, съдържащи икони /ICO/, bitmap изображения /BMP/ или метафайлове /WMF/. Метафайловете се срещат по-рядко. Те са набор от графични команди, необходими за пресъздаване на изображението, и често се наричат векторни графики. Обикновено BMP файловете са много големи, тъй като поддържат ограничена форма на компресия. Ето защо за компресирани изображения се използва формата JPEG.

  • DrawGrid

Компонентът DrawGrid е подобен на компонента StringGrid. Всъщност класа TStringGrid е наследник на класа TDrawGrid. Този компонент не съхранява данни, а просто ги визуализира.

  • ColorGrid

Компонентът ColorGrid предоставя възможност за интерактивен избор на цвят за рисуване и цвят на фона. За целта се използват свойствата ForegroundColor и BackgroundColor. Стойностите на тези свойства можете директно да присвоите на свойството Color в други обекти.

  • Bevel

Компонентът Bevel се използва за създаване на рамки, линии или ограничени пространства върху формата в зависимост от свойството Shape. Стойността на свойството Style определя дали компонентът ще бъде изпъкнал или вдлъбнат.

  • Outline

Компонентът Outline е прозорец, който визуализира списък от елементи под формата на дървовидна структура. Всеки елемент от дървото има етикет и набор от възможни BMP изображения. Достъп до елементите получавате посредством свойството Lines, което е от тип TStrings. Възможно е един елемент да притежава списък от поделементи. Можете да добавяте елементи и поделементи в режим на изпълнение на програмата като използвате методите Add и AddChild:

function Add(Node: TTreeNode; const S: string): TTreeNode;

function AddChild(Node: TTreeNode; const S: string): TTreeNode;

  • ScrollBar

Компонентът ScrollBar представлява позиционна линия, която рядко се използва самостоятелно. Обикновено позиционните линии се асоциират с други компоненти като списъци, текстови полета и др.

  • ScrollBox

Компонентът ScrollBox се използва за създаването на скролиращи области на формата, много по-малки от самата нея. Някои контроли като ListBox и Memo могат автоматично да скролират своето съдържание. Други обаче имат нужда да бъдат скролирани чрез задаване на скролиращи области посредством ScrollBox компонента.

  • TabSet

Компонентът TabSet ви дава възможност да създадете група от свързани етикети. Достъп до тях получавате чрез свойството Tabs от тип TStrings. Обикновено този компонент се използва съвместно с компонента Notebook.

  • Notebook

Компонентът Notebook се използва за създаване на няколко страници. Определянето на активната страница става посредством свойството PageIndex. Именета на страниците се задават от свойството Pages.

  • TabbedNotebook

Когато трябва да покажете по-голямо количество информация на формата, можете да използвате множество страници. Използвайки етикетите на страниците потребителят може да избере една от тях.


Каталог: project -> staf
project -> Г бнр безработицата в Ловешко бележи спад за пореден месец
project -> И радиационна защита
project -> Програма на С, която генерира и извежда на екрана редица от числа на Фибоначи: от 1 до зададено от потребителя число оценка: 4
project -> Нсорб до есента ще има единен регистър за хора с психични заболявания
staf -> Бази данни
staf -> Най-популярният език за създаване на интерактивни и динамични web сайтове е php
staf -> Управление на съобщенията за грешка


Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница