Lecția 5 ceas grafică

Proprietatea Canvas. sunt disponibile proprietăți numai în etapa punerii în aplicare a programului. Utilizarea de un ajutor. Creați o nouă formă în proiect. dublu. Constantele editabil. Funcția Pi. rotunjire și funcția de conversie de tip rotund. comenzi de desenare (metode de componente de imagine). Conectarea modulului. tip TRect.

Delphi vă permite să atragă aproape oriunde. Puteți desena pe formular, puteți desena pe marca, puteți chiar desena direct pe ecran! Dar este mai bine să utilizeze toate același ingredient special al TImage, în cazul în care numai pentru că componenta în sine va urma apoi pentru a aspira fereastra programului, mâzgăleli tale, de asemenea, redesenat. Dacă va desena ceva, cum ar fi o formă, atunci desenul va fi șters când minimizat fereastra.

Deoarece forma de spațiu pentru o astfel de ceas acolo, propun să includă în programul nostru o altă formă.

0. Cu ajutorul «Formular nou» buton sau element de meniu «Fișier / Formular nou» creați un formular nou. Zhmosh butonul «Salvare». Intrare orice nume pentru noul modul (desigur, puteți lăsa și UNIT2, dar este mai bine să utilizați nume semnificative).

1. plasat pe noua formă a imaginii componente (paleta suplimentară, buton de a 6-ca imagine) pe formular. Alinierea proprietate este expusă în alClient, având ca rezultat Imaginile vor fi repartizate pe întregul formular.

2. ai pus pe formularul cronometrul. Creezi-l handler eveniment OnTimer.

3. declara noi variabile:

var xc, yc. întreg;
u. dublu;

4. Declară constante tastate:

lh Const. întreg = 60;
lm. întreg = 100;
ls. întreg = 80;

Cu toate acestea sunt numite constante sunt foarte variabile, dar ele au de la începutul valoarea setată. Valorile acestor elemente - lungimea ora, minutul și mâinile secundare în pixeli. Ei bine, sintaxa, în opinia mea, este destul de ușor de înțeles.

5. Corpul procedurii de scriere:

xc: = Image1.Width div 2;
yc: = Image1.Height div 2;
u: = Pi / 2 - Ora * 2 * 2 * Pi;
Image1.Canvas.MoveTo (xc, yc);
Image1.Canvas.LineTo (xc + Round (lh * cos (u)), yc-Round (lh * sin (u)));

În primele două linii ale coordonatele centrului înainte de imagine, acesta va fi centrul de ceasuri noastre.

În al treilea rând de unghiul de vizualizare în sens orar. Simbolul „/“ înseamnă divizare, simbolul „*“ multiplicare, „-“ semnul minus. Procedura de expresii matematice standard, care este, în primul rând diviza / multiplica, apoi se adaugă / scade. Funcția Pi returnează pi numărul. Explicați de ce unghiul este considerat a fi exact așa cum doriți? Sau cunoștințele de geometrie suficientă? Oh, da, la început Great Eroida, apoi moștenire a educației liberale ... Deci, unghiul de matematică (în Delphi) este acceptat să numere de la orizontală și invers acelor de ceasornic. Și ceasul - de la verticală și sensul acelor de ceasornic. Semnul „-“ înainte de timp schimbă direcția de referință, și „fac pipi în jumătate“ mută punctul de referință pe sfert de tură în sens antiorar (de exemplu, numărul 12 pe ceas). Nightly Timpul își modifică valoarea 0 - 1, iar arătătorul trebuie să fie în acest moment pentru a face 2 ture, de exemplu, „2 * 2 * Pi» radiani. Astfel, vom obține u unghiul în radiani. Este în radiani și unghiul este necesar să se înlocuiască în funcțiile sinus și cosinus.

A patra linie: a pus un pointer la centru.

A cincea linie: trage o linie din poziția curentă a cursorului la punctul cu coordonatele xc + Round (lh * cos (u)), yc-Round (lh * sin (u)). X coordonate obține xc pliat și lungimea săgeții înmulțită cu cosinusul unghiului. Deoarece cosinusul unghiului - valoarea reală, iar coordonatele trebuie să fie întregi, trebuie să utilizați funcția Round - rotunjire. Întrebare pe de umplere: de ce nu scrie * lh rotunde (cos (u))? Mai puțin la calcularea coordonatelor y asociate cu faptul că axa y nu este îndreptată în sus (așa cum se obișnuiește în matematică) și până la tine și de către specialist BASIC aceasta nu ar trebui să surprindă.

6. Ultimele trei linii Copiere de două ori și modificate pentru a afișa minut și mâinile a doua. La dreapta?

7. Acum trebuie să conectați această nouă formă a programului nostru. Du-te la Unit1.pas și de a găsi un bloc care începe cu cuvântul folosește. Această listă afișează toate modulele conectate la programul. La sfârșitul acestei liste, separate prin virgula pune numele noului modul. primul formular va fi deschis atunci când programul începe să se deschidă al doilea, aveți nevoie pentru a da comanda

Porniți programul. Ceasul funcționează. Numai mâinile nu sunt șterse. Imaginile ar trebui să fie curățate înainte de fiecare randare nou. Cel mai simplu mod de a curăța Image - totul vopsea cu culoarea de fundal.

1. declară o nouă variabilă de tip Rect TRect. Acest tip acoperă în câmpul 4 - stânga, sus, dreapta, jos întreg, și concepute pentru a determina coordonatele dreptunghiului.

2. La începutul corpului procedură trebuie să fie atribuite Câmpurile de valori RECT coordonate dreptunghi, pe care dorim să picteze peste și apela metoda de umplere:

Rect.Left: = 0;
Rect.Top: = 0;
Rect.Right: = Image1.Width-1;
Rect.Bottom: = Image1.Height-1;
Image1.Canvas.FillRect (Rect);

Tema. 6. Fă-un punct pentru a face săgeata creț, și nu pur și simplu constau într-o singură linie.

În lecția următoare vom face cadran de ceas nostru.