Aplikacje w DELPHI (cd..)



Podobne dokumenty
Aplikacje w DELPHI (cd..)

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Rozdział 9. Grupowanie komponentów Pola opcji i pola wyboru Komponenty grupujące Ramka TBevel...115

Aplikacje w Delphi. Przykłady. Wydanie III

Praca na wielu bazach danych część 2. (Wersja 8.1)

VinCent Office. Moduł Drukarki Fiskalnej

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Zarządzanie Zasobami by CTI. Instrukcja

W wyświetlonym okienku New Web Server Application wybierz opcję Web App Debugger Executable, a w polu Class Name wpisz: P1.

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

Specyfikacja techniczna banerów Flash

Tekst ozdobny i akapitowy

PERSON Kraków

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Nowe funkcjonalności

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Systemy mikroprocesorowe - projekt

Zmiany w programie C GEO v. 6.5

InsERT GT Własne COM 1.0

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Ramki tekstowe w programie Scribus

GRAFIKA PROGRAMOWANA W PASCALU ==================================

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

WordPad. Czyli mój pierwszy edytor tekstu

Instrukcja programu PControl Powiadowmienia.

Skitch for Android Instrukcja obsługi 2012 Evernote Corporation Wszelkie prawa zastrzeżone Opublikowano: Jun 19, 2012

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Praca z układem. Omówione zagadnienia. Tworzenie tła

Centrum Informatyki "ZETO" S.A. w Białymstoku. Instrukcja użytkownika dla urzędników nadających uprawnienia i ograniczenia podmiotom w ST CEIDG

Ćwiczenie z wykorzystaniem zmiennych i komponentu TGauge. TTimer co pewien czas. Gra. A jednak odlicza. Stoper. Aktualny czas, czyli zegar

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

API transakcyjne BitMarket.pl

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Microsoft Management Console

KALENDARZE. Ćwiczenie 1 Tworzenie nowego, edycja kalendarza. 1. Uruchom nowy projekt. 2. W menu Narzędzia kliknij polecenie Zmień czas pracy

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

STRONA GŁÓWNA SPIS TREŚCI. Zarządzanie zawartością stron... 2 Tworzenie nowej strony... 4 Zakładka... 4 Prawa kolumna... 9

Zaznaczając checkbox zapamiętaj program zapamięta twoje dane logowania. Wybierz cmentarz z dostępnych na rozwijalnej liście.

Aplikacje internetowe i rozproszone - laboratorium

INSTRUKCJA WebPTB 1.0

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Firma Informatyczna JazzBIT

Darmowa publikacja dostarczona przez Złote Myśli

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Tworzenie aplikacji internetowych E14

Logowanie do systemu Faktura elektroniczna

Tomasz Greszata - Koszalin

1.Rysowanie wałka. Dostosowanie paska narzędzi Tworzenie nowego wałka. Uniwersytet Technologiczno Przyrodniczy w Bydgoszczy

Bazy danych. Andrzej Łachwa, UJ, /15

Wtedy wystarczy wybrać właściwego Taga z listy.

Zmiany w wersji 1.18 programu VinCent Office.

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Obsługa bazy współrzędnych geodezyjnych C-Geo

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Projekt z dnia 2 listopada 2015 r. z dnia r.

Warszawa, r.

INTENSE BUSINESS INTELLIGENCE PLATFORM

I. Zakładanie nowego konta użytkownika.

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Kilka zasad o których warto trzeba pamiętać

ZAJĘCIA KOMPUTEROWE Kryteria ocen klasa IV

RZECZPOSPOLITA POLSKA MINISTER CYFRYZACJI

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Podstawowe pojęcia: Populacja. Populacja skończona zawiera skończoną liczbę jednostek statystycznych

Wprowadzenie do systemu Delphi

Podstawy pracy w arkuszu kalkulacyjnym MS Excel

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera.

Archiwum Prac Dyplomowych

INSTRUKCJA RUCHU I EKSPLOATACJI SIECI DYSTRYBUCYJNEJ

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Cel i zakres ćwiczenia

2004 Heden Media. Wszelkie prawa zastrzeżone. Wirtualne laboratorium z napędów i sterowania pneumatycznego. Minimalne wymagania

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Niniejszy dokument obejmuje: 1. Szablon Umowy zintegrowanej o rachunek ilokata, 2. Szablon Umowy zintegrowanej o rachunek ilokata oraz o rachunek

INSTRUKCJA OBSŁUGI WD2250A. WATOMIERZ 0.3W-2250W firmy MCP

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

Rejestr Windows - cz. II

9. Dynamiczne generowanie grafiki, cz. 3

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

Regulamin organizacji przetwarzania i ochrony danych osobowych w Powiatowym Centrum Kształcenia Zawodowego im. Komisji Edukacji Narodowej w Jaworze

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Opisy. Ikona: Polecenie: STCFG Menu: Stal Konfiguracja

Regulamin rekrutacji uczniów do klasy pierwszej Szkoły Podstawowej im. Maksymiliana Wilandta w Darzlubiu. Podstawa prawna: (Dz.U.2014 poz.

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)


Zainstalowana po raz pierwszy aplikacja wymaga aktualizacji bazy danych obsługiwanych sterowników.

3 Zarządzenie wchodzi w życie z dniem 1 listopada 2012 roku.

Poniżej instrukcja użytkowania platformy

Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Transkrypt:

Aplikacje w DELPHI (cd..) GRAFIKA,, DATA, OKNA DIALOGOWE, MODUŁ dr inż. Paweł Mazurek 1

Grafika w Delphi komponent Shape Komponent Shape (na zakładce Additional Palety Komponentów) umożliwia dodawanie do formularza figur geometrycznych o różnych kształtach. Jego użycie jest proste, wystarczy umieścić go w formularzu i ustawić według własnych potrzeb właściwości pędzla (Brush), pióra (Pen) i kształtu (Shape). Teraz można przystąpić do rysowania okręgów, elips, kwadratów i prostokątów (również z zaokrąglonymi narożnikami). Właściwość Brush wpływa na kolor tła, właściwość Pen zmienia kolor i grubość krawędzi figur. 2

Grafika w Delphi komponent Shape 3

Grafika w Delphi komponent Shape uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; procedure TForm1.ComboBox1Change(Sender: TObject); begin Case Combobox1.ItemIndex of 0:Shape1.Shape:=stCircle; 1:Shape1.Shape:=stSquare; 2:Shape1.Shape:=stRoundSquare; end; end; procedure TForm1.ScrollBar1Change(Sender: TObject); begin Shape1.Width:= Scrollbar1.Position; Shape1.Height:= Scrollbar1.Position; end; 4

Grafika w Delphi obiekt TCanvas Niektóre komponenty posiadają właściwość typu obiektowego TCanvas (płótno). Są to m.in.: TForm, TImage, TPaintBox, TBitmap, TComboBox, TStringGrid, TlistBox, TPrinter. Właściwość Canvas zawiera metody, które pozwalają na rysowanie na tych komponentach za pomocą linii różnych figur, kolorowanie powierzchni oraz wyświetlanie tekstu. Możliwa jest również zmiana koloru i grubości linii, koloru i wzoru wypełnienia, atrybutów czcionki itd. Rysowanie za pomocą metod obiektu Canvas różnych obiektów może być przydatne do zmiany cech niektórych komponentów, np. TStringGrid czy TCTart, a także przy drukowaniu formularza i tekstu. 5

Grafika w Delphi obiekt TCanvas Wybrane właściwości obiektu Tcanvas: Brush określa wzór lub kolor wypełnienia figur (pędzel); Font krój czcionki dla wyświetlanych napisów; Pen opisuje cechy kreślonych linii: grubość, styl, kolor -pióro PenPos określa współrzędne kursora graficznego. Podstawowymi parametrami większości procedur i funkcji graficznych są współrzędne punktu na komponencie, po którym rysujemy. Lewy górny róg ma współrzędne (0, 0), a prawy dolny najczęściej (Width, Height). 6

Grafika w Delphi obiekt TCanvas Wyświetlanie prostych figur geometrycznych i tekstu Proste figury i tekst możemy wyświetlić na formularzu, korzystając z procedur i funkcji obiektu typu Tcanvas. Kolor:=Canvas.Pixels[x,y] Za pomocą funkcji Pixels można odczytać kolor piksela w miejscu o współrzędnych (x, y) zmienna Kolor jest typu Tcolor. Canvas.Pixels[10,20]:=clRed Ta sama funkcja wywołana w ten sposób powoduje wyświetlenie na formularzu czerwonego punktu w miejscu o współrzędnych [10, 20]. MoveTo(x,y: integer) Przenosi kursor graficzny do punktu o współrzędnych x, y. 7

Grafika w Delphi obiekt TCanvas LineTo(x,y:integer) Rysuje linię od bieżącej pozycji kursora graficznego do punktu o współrzędnych x, y. Rectangle(x1, y1, x2, y2: Integer) Procedura rysuje prostokąt wypełniony standardowym kolorem pędzla (Canvas.Brush.Color). Ellipse(x1, y1, x2, y2: Integer) Procedura rysuje elipsę (lub koło) parametrami są współrzędne dwóch przeciwległych wierzchołków prostokąta (kwadratu), w który elipsa jest wpisana. Polyline(Points: array of TPoint) Procedura rysuje linię łamaną lub wielokąt. Parametrami są współrzędne punktów, które zostaną połączone linią. Jeśli współrzędne punktu pierwszego i ostatniego są takie same, to rysowany jest wielokąt; w przeciwnym razie linia łamana. np. procedura: Polyline([Point(40, 10), Point(20, 60), Point(70, 30),Point(10, 30), Point(60, 60), Point(40, 10)]) narysuje gwiazdę pięcioramienną. 8

9

Rectangle(X1, Y1, X2, Y2: Integer) lub Rectangle(R: TRect) kreśli prostokąt, przykład: Canvas.Rectangle(50, 50, 150, 100); FillRect(R: TRect) prostokąt bez konturu, przykład: Canvas.FillRect(Rect(0,0,100,100)); FrameRect(R: TRect) kontur prostokąta, przykład: Canvas.FrameRect(Rect(0,0,100,100)); RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer) kreśli prostokąt z zaokrąglonymi rogami: Canvas.RoundRect(50,50,150,100,30,30); Ellipse(X1, Y1, X2, Y2: Integer) lub Elipse(R: Trect) kreśli elipsę, przykład: Canvas.Ellipse(50, 50, 150, 100); Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) kreśli łuk na bazie elipsy, przykład: Canvas.Arc(0,0,200,100,200,0,0,50); Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) kreśli część elipsy ograniczoną cięciwą,np: Canvas.Chord(0,0,200,100,200,0,0,50); Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) kreśli wycinek elipsy, przykład: Canvas.Pie(0,0,200,100,200,0,0,50); TextOut(X, Y: Integer; Tekst: string) kreśli łańcuch tekstowy w określonych współrzędnych: Canvas.TextOut(50, 30, 'Łańcuch tekstowy jako grafika.'); TextRect(Prostokat: TRect; X, Y: Integer; Tekst: string) kreśli łańcuch tekstowy ograniczony obszarem prostokątnym, przykład: Prostokat:=Rect(20,20,100,80); Canvas.TextRect(Prostokat,30,40,'Łańcuch tekstowy.'); 10

Grafika w Delphi obiekt TCanvas Polygon(Points: array of TPoint) Procedura umożliwia narysowanie wielokąta wypełnionego bieżącym kolorem i stylem pędzla. Przykład: Canvas.Brush.Color = clred; Canvas.Polygon([Point(10,10), Point(30,10), Point(130,30), Point(240,120)]); narysowanie czworokąta wypełnionego kolorem czerwonym. Współrzędne punktu pierwszego i ostatniego nie muszą się pokrywać, ponieważ procedura i tak łączy na końcu punkt ostatni z punktem pierwszym. Refresh Odświeżanie formularza procedura kasuje wszystkie obiekty rysowane za pomocą metod obiektu Canvas i nieumieszczone w procedurze obsługi zdarzenia OnPaint. Draw(x, y:integer; Graphic:TGraphic) Rysuje obraz określony parametrem Graphic w miejscu o współrzędnych x i y. Arc(x1,y1, x2,y2, x3,y3, x4,y4: integer) Rysuje krzywą eliptyczną w prostokącie o współrzędnych (x1, y1; x2, y2), od punktu o współrz. (x3, y3) do punktu (x4, y4). 11

Grafika w Delphi obiekt TCanvas TextOut(x,y:integer; const Text:string) Wyświetla tekst od punktu o współrzędnych x, y lewy górny róg prostokąta zawierającego tekst; Text to parametr w postaci tekstu stałego w apostrofach, np. 'Ala ma kota', lub zmienna zawierająca łańcuch znaków, np. a:='ala ma kota' (const w nagłówku procedury oznacza podobne wywołanie jak w przypadku wartości, lecz umożliwia bardziej efektywne wykorzystanie pamięci). CopyRect(const Dest: TRect; Canvas: TCanvas; const Source:TRect) Kopiuje część obrazu z jednego płótna na inne płótno. FillRect(const Rect: Trect) Rysowanie prostokąta wypełnionego bieżącym kolorem i wzorem. FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle) Wypełnianie tzw. powodziowe obiektów. FrameRect(const Rect: Trect) Rysowanie obwodu prostokąta. 12

Grafika w Delphi obiekt TCanvas Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer); Rysowanie wycinka koła. RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer) Rysowanie prostokąta z zaokrąglonymi narożnikami. StretchDraw(const Rect: TRect; Graphic: TGraphic) Dopasowanie rysunku do obszaru danego prostokąta. TextHeight(const Text: string):integer Funkcja zwraca wysokość tekstu w pikselach. TextOut(X, Y: Integer; const Text: string) Procedura wyświetla napis na komponencie posiadającym właściwość TCanvas. TextRect(Rect: TRect; X, Y:Integer; const Text: string) Procedura wyświetla napis w prostokącie, którego współrzędne są podane w postaci typu TRect (pierwszy parametr). Procedurę wykorzystywano przy formatowaniu komórek tabeli. TextTidth(const Text: string):integer Funkcja zwraca szerokość tekstu w pikselach. 13

Grafika w Delphi Pióro definiuje obiekt, którego przeznaczeniem jest rysowanie linii. Może to być prosta linia rysowana od jednego punktu do drugiego lub krawędź rysowana wokół prostokątów, elips i wielokątów. Dostęp do pióra, będącego obiektem klasy TPen, następuje poprzez właściwość Pen klasy TCanvas. Color - Ustala kolor linii. Handle - Zawiera kontekst urządzenia pióra (HDC). Stosowany podczas bezpośrednich odwołań do GDI. Mode - Określa sposób w jaki linia będzie rysowana w kontekście bieżącej zawartości obszaru (normalny, inwersyjny, xor, itd.). Style - Określa styl pióra. Może to być styl ciągły, kropkowy, kreskowy, kropkowo-kreskowy, czysty lub inny. Width - Zawiera grubość linii w pikselach. 14

Grafika w Delphi obiekt TCanvas Wyświetlenie na formularzu linii rysowanych różnymi stylami procedure TForm1.Button1Click(Seender: TObject); var x,y:integer; begin x := 210; y := y+10;//y - zmienna globalna Canvas.MoveTo(x,y); x := Random(ClientWidth - 10); y := Random(ClientHeight - 10); Canvas.Pen.Color := RGB(Random(256),Random(256),Random(256)); case Random(5) of 0: Canvas.Pen.Style := GsSolid; 1: Canvas.Pen.Style := GsDash; 2: Canvas.Pen.Style := GsDot; 3: Canvas.Pen.Style := GsDashDot; 4: Canvas.Pen.Style := GsDashDotDot; end; Canvas.LineTo(x+200, y); end; 15

Grafika w Delphi obiekt TCanvas Wyświetlenie na środku formularza punktu koloru czerwonego, (przy czym nie może w tym miejscu znajdować się inny obiekt (np. przycisk), bo wyświetlony piksel zostanie przez ten obiekt przesłonięty). procedure TForm1.Button1Click(Sender: TObject); begin Canvas.Pixels[ClientWidth div 2, ClientHeight div 2]:=clRed; end; 16

Grafika w Delphi obiekt TCanvas Wyświetlenie końcowych współrzędnych formularza procedure TForm1.Label1Click(Sender: TObject); begin Label1.Caption:=IntToStr(ClientWidth)','+IntToStr(ClientHeight); end; 17

Grafika w Delphi Pędzel jest obiektem służącym do wypełniania wnętrza obszarów wszystkie rysowane elipsy, prostokąty, wielokąty itp. zostaną wypełnione zgodnie z bieżącymi ustawieniami pędzla. Ustawienia te nie ograniczają się tylko do koloru (jak można by mniemać na podstawie potocznego znaczenia słowa pędzel ) lecz obejmują również wzór ( deseń ) wypełnienia, bądź to w jednej z predefiniowanych postaci, bądź też w postaci określonej przez wskazaną bitmapę. W ramach klasy TCanvas pędzel reprezentowany jest przez właściwość Brush klasy TBrush. 18

Grafika w Delphi Bitmap Bitmapa określająca wzór wypełnienia. W przypadku Windows 95 bitmapa ta nie może przekroczyć rozmiaru 8 8 pikseli. Color Kolor wypełnienia. Handle Kontekst urządzenia (HDC) pędzla. Stosowany przy bezpośrednich odwołaniach do GDI. Style Styl pędzla (jednolity, wymazujący (clear) lub jeden z predefiniowanym wzorów). 19

Grafika w Delphi obiekt TCanvas Wyświetlenie na formularzu trzech różnych prostokątów ramkę, prostokąt wypełniony kolorem BrusT.Color, prostokąt z zaokrąglonymi brzegami. procedure TForm1.Button3Click(Sender: TObject); var prost: TRect; begin prost:= Rect(200,10,300,100); Canvas.Brush.Color := clblack; Canvas.FrameRect(prost); Canvas.Brush.Color := clgreen; Canvas.Rectangle(200,120,300,210); Canvas.RoundRect(200,230,300,320,20,20); end; 20

Grafika w Delphi obiekt TCanvas Narysowanie na formularzu trójkąta o zielonym obwodzie i żółtym wypełnieniu. procedure TForm1.Button1Click(Sender: TObject); begin Canvas.Brush.Color:=clYellow; Canvas.Pen.Color:=clGreen; Canvas.Polygon([Point(20,20),Point(200,20),Point(110,100)]); end; 21

Grafika w Delphi obiekt TCanvas Przy wypełnianiu domyślną wartością właściwości Style jest bssolid, co oznacza styl jednolity. Wypełnianie obszarów wzorem wymaga nadania właściwości Style odpowiedniej wartości (bshorizontal, bsvertical, bsfdiagonal, bsbdiagonal, bscross, bsdiagcross). Poniższy przykład rysuje koło wypełnione wzorem w kratę obróconą o 45 stopni. Canvas.Brush.Color:= clblue; Canvas.Brush.Style:= bsdiagcross; Canvas.Ellipse(20,20,220,220); 22

Grafika w Delphi obiekt TCanvas Kolejną interesującą cechą pędzli jest opcja tła w postaci bitmapy. Najpierw przyjrzyj się poniższemu fragmentowi kodu: Canvas.Brush.Bitmap:=TBitmap.Create; Canvas.Brush.Bitmap.LoadFromFile('tlo.bmp'); Canvas.Ellipse(20, 20, 220, 220); Canvas.Brush.Bitmap.Free; Pierwsza linia kodu tworzy obiekt klasy TBitmap i przypisuje go do właściwości Bitmap pędzla. W drugiej linii następuje załadowanie bitmapy z pliku. Trzecia linia rysuje elipsę. Po jej narysowaniu bitmapa jest zwalniana jest to niezbędne, ponieważ czynność ta nie jest wykonywana przez bibliotekę VCL. Zaniedbanie tej operacji spowoduje zagubienie fragmentu pamięci w programie. 23

Grafika w Delphi Czcionki stosowane przez klasę TCanvas nie różnią się niczym od czcionek stosowanych w formularzach czy innych komponentach. Właściwość Font klasy TCanvas jest identyczna jak właściwość o tej nazwie należąca do dowolnego komponentu. Canvas.Font.Name:= 'Courier New'; Canvas.Font.Size:= 14; Canvas.Font.Style:= Canvas.Font.Style+ [fsbold]; Canvas.TextOut(20, 20, 'Test'); 24

Grafika w Delphi zdarzenie OnPaint Instrukcje zawierające metody obiektu Canvas można umieszczać w procedurach obsługi zdarzenia OnClick dla przycisków, dla formularza i innych komponentów. Można również korzystać z innych zdarzeń komponentów. Jednak tylko niektóre z nich umożliwiają tzw. trwałe rysowanie, czyli rysowanie odnawiane po każdej zmianie, np. po zmianie rozmiaru okna i przykryciu w ten sposób części obiektów graficznych. Dla okna formularza korzysta się w tym celu ze zdarzenia OnPaint. Dla innych komponentów podobne zdarzenia mają inne nazwy. 25

Grafika w Delphi zdarzenie OnPaint OnPaint Zdarzenie dla formularza generowane każdorazowo, gdy zawartość okna formularza wymaga odświeżenia. Sytuacja taka ma miejsce przy tworzeniu okna formularza, a także wtedy, gdy np. jedno okno zostanie przesłonięte innym oknem lub gdy następuje zmiana jego rozmiaru. PaintBoxPaint Odpowiednik zdarzenia OnPaint dla komponentu PaintBox. OnDrawCell Zdarzenie występujące dla komponentu typu TDrawGrid i TStringGrid umożliwia trwałe rysowanie obiektów i wyświetlanie tekstu w komórkach. OnAfterDraw Zdarzenie dla komponentu typu TChart, odpowiednik zdarzenia OnPaint. 26

Grafika w Delphi zdarzenie OnPaint Napisanie na formularzu tekstu Font (czcionka) krój czcionki do kreślenia tekstu: Charset zestaw znaków, Color kolor, Height wysokość w pikselach, Name nazwa, Pitch szerokość znaków (fpdefault, fpfixed, fpvariable), Size wielkość w punktach, Style styl (fsbold, fsitalic, fsunderline, fsstrikeout). 27

Edytor graficzny 28

Edytor graficzny Edytor Graficzny Delphi umożliwia tworzenie i edytowanie bitmap (.bmp), ikon (.ico) i kursorów (.cur). Oprócz tego można również tworzyć projekty zasobów, składające się z wielu bitmap, ikon i kursorów przechowywanych w pojedynczym pliku (.res). Plik taki może być następnie dodany do projektu Delphi, umożliwiając wykorzystanie zapisanych w nim zasobów. Edytor Graficzny umożliwia tworzenie rysunków dwu- i czterokolorowych, a w przypadku plików bitmap również 256- kolorowych. Podczas rysowania można wybrać dowolny kolor spośród dostępnych. 29

Kolor przezroczysty i odwrócony W przypadku ikon i kursorów możliwe jest zastosowanie koloru przezroczystego (ang. transparent słowo kolor jest tu pojęciem umownym). Narysowanie piksela w kolorze przezroczystym równoważne jest z brakiem jego narysowania dzięki temu możliwe jest prześwitywanie spod ikony (lub kursora) fragmentów tła, na którym aktualnie się ona (on) znajduje. Niemal każda ikona i każdy kursor korzysta z koloru przezroczystego. Innym przykładem koloru umownego jest kolor odwrócony (ang. inverted) narysowanie w danym miejscu piksela w kolorze odwróconym jest równoważne odwróceniu (do koloru dopełniającego) piksela aktualnie znajdującego się w tym miejscu. 30

Komponent Image Do wyświetlenia bitmapy w formularzu służy komponent Image. Właściwość Picture klasy TImage jest obiektem klasy TPicture. Wyboru obrazu można dokonać na etapie projektowania poprzez Inspektor Obiektów lub poprzez ładowanie w trakcie pracy programu. Komponent PaintBox. Udostępnia on prostokątny obszar w postaci tzw. płótna (canvas), stanowiącego arenę wszelkich operacji graficznych. Płótno to reprezentowane jest przez jego właściwość Canvas, będącą obiektem klasy TCanvas; klasa ta odpowiedzialna jest za większość operacji graficznych wykonywanych przez Delphi. 31

Komponent Image Komponent Image służy do wyświetlania bitmap, metaplików i ikon. Sam komponent jest niewidoczny. Zmiana rozmiaru obrazu Obrazy wstawiane do komponentu są często zbyt małe lub zbyt duże w stosunku do komponentu. Można dopasować komponent do obrazu lub oraz do komponentu jedną z następujących metod: Użyj Image editor, aby zmienić rozmiary obrazka przed jego umieszczeniem. Dopasuj rozmiar grafiki do rozmiaru komponentu ustawiając właściwość Stretch komponentu Image na True. Zmień wielkość komponentu, aby dopasować go do grafiki ustawiając właściwość AutoSize na True zanim zostanie wstawiona grafika. Aby wyśrodkować rysunek w komponencie, ustaw właściwość Center na True. Aby przesunąć komponent na wierzch lub pod spód wybierz Edit Bring to Front lub Edit Send to Back. Wstawianie rysunku w kodzie programu metoda LoadFromFile - Image1.Picture.LoadFromFile( Rysunki/obrazek1.bmp ); 32

33

34

Komponent Rysunek (PaintBox) Komponent PaintBox zapewnia przestrzeń do ręcznego rysowania dowolnej grafiki (metodami klasy TCanvas). Wybrane właściwości: Canvas płótno do kreślenia obiektów graficznych. Wybrane zdarzenia: OnPaint zdarzenie zachodzi gdy zawartość komponentu wymaga przerysowania. 35

Proste operacje graficzne Wypisywanie tekstu Wypisywanie tekstu nie wydaje się być operacją trudną czy jest tak w rzeczywistości? Metody TextOut i TextRect Metoda TextOut jest najprostszym środkiem służącym wypisywaniu tekstu; tak naprawdę niewiele można powiedzieć na jej temat. Wystarczy przekazać jej współrzędne X i Y oraz tekst do wyświetlenia Canvas.TextOut(20,20, 'Joshua Reisdorph'); i gotowe powyższa instrukcja powoduje wyświetlenie napisu... 36

Proste operacje graficzne Metoda TextRect, również wypisująca podany tekst w podanym położeniu, umożliwia ponadto określenie prostokątnego obszaru ograniczającego każdy fragment tekstu, który wysunie się poza tę granicę, zostanie obcięty. Poniższy fragment kodu daje pewność, iż wyświetlonych zostanie nie więcej niż 100 pikseli tekstu: Canvas.TextRect( Rect(20,50,120,70), 20,50, 'To jest bardzo długi tekst, który może zostać obcięty,'); Obydwie metody TextOut i TextRect mogą wyświetlać jedynie pojedyncze linie tekstu. Nie są wykonywane żadne funkcje formatujące tekst. 37

Funkcja DrawText Proste operacje graficzne Funkcja biblioteki API Windows DrawText daje znacznie większe możliwości rysowania tekstu niż metoda TextOut. Klasa TCanvas nie posiada metody obudowującej tę funkcję, dlatego konieczne jest odwołanie się do nie w sposób bezpośredni. var R: TRect; begin R:=Rect(20,20,220,80); Canvas.Rectangle(20,20,220,80); DrawText(Canvas.Handle, 'Przykład użycia funkcji DrawText.', -1, R,DT_SINGLELINE or DT_VCENTER or DT_CENTER); end; 38

Rysowanie myszką Program ten pokazuje, jak rysować myszką po płótnie formatki. W programie można zmienić rozmiar pędzla, jego kolor oraz wyczyścić obraz. ComboBox. W pozycji Items definiujemy kilka liczb które będą rozmiarami pędzla. W pozycji Text wpisujemy przykładowo napis Rozmiar pędzla. Button W pozycjach Caption wprowadzić napisy (kolor, gumka, odświeżenie, zamknij). ColorDialog. Okno wyboru koloru. 39

W programie wykorzystujemy zdarzenia onmousedown, onmousemove i onmouseup zachodzące odpowiednio podczas: wciśnięcia lewego przycisku myszy, przesuwania z wciśniętym lewym przyciskiem i podczas puszczania lewego klawisza myszy, kiedy znajdujemy się nad danym komponentem. W tym przypadku będzie to formatka. W sekcji Implementation zadeklarujemy zmienną typu Boolean, której zadaniem będzie wykrycie faktu naciśnięcia i puszczenia lewego przycisku myszki. Opcja Gumki - polega na rysowaniu kolorem domyślnym formy. 40

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ToolWin, Buttons; type TForm1 = class(tform) Button1: Tbutton; ColorDialog1: TColorDialog; Button2: TButton; ComboBox1: TComboBox; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button2Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; 41

var Form1: Tform1; implementation {$R *.dfm} Var rysuj:boolean; <- zmienna śledząca lewy przycisk procedure TForm1.Button1Click(Sender: TObject); begin Close; end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.MoveTo(x,y); rysuj:=true; end; (* W czasie wciskania lewego przycisku ustawiamy się w punkcie o współrzędnych X, Y, czy tam, gdzie klikniemy. *) procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Begin if rysuj then Canvas.LineTo(x,y); End; (* jeśli zmienna rysuj ma wartość True to przesuń się do punktu X,Y, czyli tam gdzie, przesuwasz wskaźnik myszy *) 42

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin rysuj:=false; End; (*Jak puścimy lewy przycisk, przypisz zmiennej rysuj wartość False. *) procedure TForm1.Button2Click(Sender: TObject); begin if ColorDialog1.Execute Then Canvas.Pen.Color:=ColorDialog1.Color; End; (* Nadaj pędzlowi kolor wybrany w oknie ColorDialog1. *) procedure TForm1.ComboBox1Change(Sender: Tobject); begin Canvas.Pen.Width:=ComboBox1.ItemIndex; End; (* Szerokość (Width) pędzla równa się liczbie z ComboBox1. *) procedure TForm1.Button3Click(Sender: TObject); begin Repaint; End; (* odśwież, wyczyść *) procedure TForm1.Button4Click(Sender: TObject); begin Canvas.Pen.Color:=clBtnFace; end; End. (* Do pędzla (tutaj: Gumki) przypisz kolor formy. *) 43

Data i czas 44

Data i czas Data i czas są reprezentowane w komputerze za pomocą typu TdateTime. Zmienne typu daty porównujemy stosując operatory: <,>,<=,>=,=,<> Trunc liczba dni która dzieli dwie daty (część całkowita) Funkcje związane z datą (moduł SysUtils): function Date: TDateTime; - zwraca aktualna datę function DateToStr (Date:TDateTime):String; - zamienia datę na łańcuch function StrToDate (cons S:String):TDateTime; - zamienia datę [podaną w postaci łańcuch na typ TdateTime. Format daty: m/d/y lub y/m/d function DayOfWeek(Data: TDateTime): Integer zwraca numer dnia tygodnia. 45

Data i czas function DateTimeToString (var Wynik: String; const Format: String; Data:TDateTime); - procedura zwraca w parametrze Wynik datę podaną parametrami Data według formatu Format: d - wyświetla dzień jako liczbę dddd - wyswietal nazwę dnia tygodnia mmmm - wyświetla pełna nazwę miesiąca yyyy - wyświetla rok jako liczbę czterocyfrową. przykład DateTimeToString(wynik, 'dddd,d mmm d yyy r.',date); Label1.Caption:=wynik; 46

Data i czas Time - procedura zwraca bieżący czas systemowy Now zwraca datę I czas DecodeDate (data, rok,miesiąc,dzień) dzieli datę na rok... DecodeTime (czas, g,m,s,ms) dzieli czas EncodeDate(r,m,d) przekształca datę wyrażony w postaci roku... do postaci TdateTime EncodeTime(g,m,s,ms) przekształca czas wyrażony w postaci godzin... do postaci TdateTime 47

Data i czas Komponent DateTimePicker pozwala na wproadzeniedaty przez wybór kalendarza. Właściwości: DateFormat - format daty: dfshort, dflong Date - data ustawiana jako domyślna w oknie, standardowo - bieżąca MinDate - minimalna data możliwa do wyboru z kalendarza MaxDate - maksymalna data możliwa do wyboru z kalendarza Komponent UpDown to strzałki do przesuwania wartości skali z określonym krokiem. Właściwości: Associate, Min, Max, Position 48

Data i czas Aplikacja obliczająca ile dni dzieli datę od daty zadeklarowanej type TForm1 = class(tform) Label1: TLabel; DateTimePicker1: TDateTimePicker; procedure DateTimePicker1Change(Sender: TObject);... procedure TForm1.DateTimePicker1Change(Sender: TObject); var ile:real; begin ile:=datetimepicker1.date-date; Label1.Caption:='Liczba dni: '+IntToStr(Trunc(ile)); end; 49

Data i czas Odebranie z komponentu DateTimePicker wybranej przez użytkownika daty i wyświetlenie jej na etykiecie. 50

Data i czas Komponent TTimer umożliwia wykonanie jakiegoś działania z określonm opóźnieniem lub wykonac jakieś działanie cyklicznie w określonych odstępach czasu. 51

Okna dialogowe 52

Okienka Dialogowe Obsługę standardowych dialogów charakterystycznych dla środowiska Windows, takich jak wybór nazwy pliku do odczytu lub zapisu, określenie atrybutów czcionki, wydruku... umożliwiają komponenty zakładki DIALOGS. Komponenty niewizualne okna pojawiają się podczas wykonywania funkcji execute : true/false 53

Okienka dialogowe TopenDialog służy do wyświetlania okna Otwarcie pliku 54

Okienka dialogowe dla okna ustawiony filtr na wyświetlane pliki przez wykorzystanie właściwości Filter. 55

Okienka dialogowe 56

Właściwości komponentu TOpenDialogs Title InitialDir FileName Określa tytuł okna, domyślnie Wybierz nazwę pliku. Określa folder, którego zawartość wyswietlana jest bezpośrednio po wywołaniu procedury. Właściwość zawiera nazwę wybranego pliku wraz ze ścieżką. DefaultExt Określa domyślne rozszerzenie dla pliku 57

Komponenty Dialogs TSaveDialog umożliwia wyswietlenie okna wyboru nazwy pliku do zapisu. Ustawienie Options ofoverwriteprompt na true zapobiega nadpisywaniu. TOpenPictureDialog umożliwia wyswietlenie okna do wyboru nazwy pliku z ustawionym filtrem na pliki graficzne jest bezpośrednio po wywołaniu procedury. TSavePictureDialog -------//--------- TFontDialog realizuje standardowy dialog określania rodzajów i atrybutów czcionki TColorDialog wyświetlenie okna do wyboru koloru 58

Komponenty Dialogs TPrintDialog wyswietlenie okna definiującego parametry wydruku poprzez określenie wartości: ProntRange Copies PrintToFile Options TPrinterSetupDialog skonfigurowanie drukarki (rozmiar strony, orientacja, właściwości wydruku..) TFindDialog wyświetlenie okna dialogowego do wyszukania tekstu TFontDialog okno dilaogowe które umożliwia wyszukanie i zamianę tekstu 59

60