Animație în delphi

Probabilitatea ca sandwich va cădea în jos partea de unt,

este direct proporțională cu costul covorului.

Legilor lui Murphy.

Să ne descrie cerul înstelat, în care zboară o farfurie zburătoare. Astfel, este necesar să se facă această animație cu restaurarea automată a fundalului sub o imagine în mișcare.

În primul rând trage cerul. Pune pe formularul și faceți clic pe Image. Prin apăsarea butonului se va executa codul de mai jos:

Procedura TForm1.Button1Click (Expeditor: TObject);

În primul rând, întreaga panza este umplut cu negru, și apoi vă afișează locații aleatorii de 500 de stele. Puteți utiliza prelata obiectului proprietății pentru imaginea unui singur punct - o matrice de pixeli [x, y], care oferă acces direct la punctul de culoare cu coordonatele x, y.

Acum trebuie să tragem o farfurie zburătoare. Ei într-adevăr mai văzut niciodată atât de precizie extremă în detaliu nu este necesară. Lăsați echipa va depune plăcile de desen într-o procedură separată este semnificativ face viața mai ușoară în viitor.

Procedura TForm1.Button1Click (Expeditor: TObject);

Vă rugăm să rețineți că procedura Ufo trebuie să fie în cadrul procedurii de TForm1.Button1Click, deoarece în caz contrar nu va avea acces la formularul de ecran Form1. Datorită naturii de a lucra cu animație de culoare de o farfurie zburătoare de pe ecran nu este albastru. Placă este reprezentat de culoarea este obținută prin efectuarea „SAU logic“ pe culoarea de fundal și imagini. În acest caz, placa va fi galben, care este destul de acceptabil.

Rămâne de a organiza deplasarea plăcilor de pe ecran. Acest lucru se face astfel:

Cea mai importantă linie în acest pasaj - Pen.Mode: = pmNOTXOR. Acesta setează ieșirea în modul grafic „XOR“. În acest mod, producția de una și aceeași imagine de două ori în același loc conduce la reconstrucția automată a imaginii sub imaginea de fundal. În este afișată o serie de imagine pentru prima dată (apel de procedură Ufo), efectuat apoi echipa Application.ProcessMessages care asigură afișarea imediată a unui OZN pe ecran și face o întârziere de 10ms, așa că am avut timp pentru a vedea ce sa întâmplat. Mai multe OZN apare în același loc din nou, iar placa de imagine va fi pierdută, iar sub el revine automat de fundal.

Coordonatele plăcile sunt schimbate și X, și Y, așa că va merge în jos spre dreapta pe ecran.

Run ... Frumos? Nu! Ecranul pâlpâie urât. Ce să fac? Simplu, este doar un alt truc Delphi. Pentru imagine dinamică nu flicker pe formular, la începutul procedurii de afișare de animație este necesară pentru a adăuga o linie

Acum, desene animate nostru va arata destul de bine.