ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π’ΡΡΠ±ΠΎ-ΠΠ°ΡΠΊΠ°Π»Ρ
Π¦Π²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ½ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ, Π·Π°Π»ΠΈΡΡΡ ΡΠΎΠ½ΠΎΠΌ. Π¦Π²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ½ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΊΠ°ΠΊΠΈΠΌ Π»ΠΈΠ±ΠΎ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΈΠ³ΡΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ Π·Π°Π½ΠΎΡΡΡΡΡ Π΄Π²Π° ΠΎΠ±ΡΠ°Π·Π° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠΊΠ° Ρ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ³. ΠΠΊΡΠ°Π½… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ. ΠΠ»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π’ΡΡΠ±ΠΎ-ΠΠ°ΡΠΊΠ°Π»Ρ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ Π² Π±ΡΡΡΡΠΎΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ½ΠΊΠΎΠ² (ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π΅ΡΠ²Ρ Π½Π΅ ΡΠΈΠΊΡΠΈΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ < 1/6 ΡΠ΅ΠΊ., ΡΠΎ, Π±ΡΡΡΡΠ°Ρ ΡΠΌΠ΅Π½Π° ΠΊΠ°Π΄ΡΠ° (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅) Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.
ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ (Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΠΠ£) ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ². ΠΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΊΡΠ°Π½Π° Π² Π½ΡΠΆΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π°
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠΊΡΠ°Π½Π°, ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΡΠΈ ΠΏΠ°ΠΌΡΡΡ, ΡΠ°Π·ΠΌΠ΅Ρ (Size) ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
Size: = ImageSize (X1, Y1, X2, Y2); {ΡΠΈΠΏ Word}.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ImageSize ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Rectangle. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΡΠΎΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ :
(X2-X1+1)*(Y2-Y1+1). Π Π°Π·ΠΌΠ΅Ρ ΠΎΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ 64 ΠΠ±Π°ΠΉΡ.
ΠΠ°Π»Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ P (ΡΠΈΠΏΠ° pointer), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ (Π±ΡΡΠ΅ΡΠ°) ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ «Size», ΠΎΡΠ²ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΊΡΠ°Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ: GetMem (P, Size);
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π² ΠΠΠ£ (Π±ΡΡΠ΅ΡΠ΅) ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ: GetImage (X1, Y1, X2, Y2, P^);
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ: PutImage (X, Y, P^, N);
ΠΠ΄Π΅ΡΡ X, Y — ΠΏΠΎΠ·ΠΈΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π° ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ,.
P^ - ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±ΡΡΠ΅ΡΠ° Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ «Π » ,.
N — ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°:
N = 0 (CopyPut) — Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π±ΡΡΠ΅ΡΠ°.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ Ρ Π±ΠΈΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠ° ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΡ ΡΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠ°:
N = 1 (XorPut) — «ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ» (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 1, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½Ρ),.
N = 2 (OrPut) — «ΠΠΠ» (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 1, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±ΠΈΡΠΎΠ² ΡΠ°Π²Π΅Π½ 1),.
N = 3 (AndPut) — «Π «(ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ 1, Π΅ΡΠ»ΠΈ ΠΎΠ±Π° Π±ΠΈΡΠ° ΡΠ°Π²Π½Ρ 1),.
N = 4 (NotPut) — «ΠΠ» (Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈΠ½Π²Π΅ΡΡΠ½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π±ΡΡΠ΅ΡΠ°).
Π¦Π²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ½ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ, Π·Π°Π»ΠΈΡΡΡ ΡΠΎΠ½ΠΎΠΌ. Π¦Π²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ½ΠΎΠΊ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΊΠ°ΠΊΠΈΠΌ Π»ΠΈΠ±ΠΎ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΈΠ³ΡΡ.
ΠΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ XorPut ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΡΡΠ΅ΡΠ°, Π° ΠΏΡΠΈ Π²ΡΠΎΡΠΎΠΌ — Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΡΡΠ΅Π³ΠΎΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π±ΡΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΡΠ½ΠΎΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠΊΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΊ ΠΈ Π½ΠΎΠ³. ΠΠ° ΡΠΊΡΠ°Π½ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ XorPut, Π·Π°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ½ΠΎΠ²Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ XorPut Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅ (ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅), Π΄Π°Π»Π΅Π΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ) Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠΎΡΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ XorPut ΠΈ Ρ. Π΄.
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ (ΠΎΡΠΈΡΡΠΊΠ°) ΡΡΠ°ΡΡΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ «Size», Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π°Π΄ΡΠ΅ΡΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ «Π », ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ: FreeMem (P, Size);
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ P ΠΈ P^ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ — ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡ GetImage, PutImage, Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠ²ΠΎΠ΄Π° XorPut:
uses Graph, Crt;
var Gd, Gm, i, j, k, Size, x, y, Xmax, Ymax: Integer;
P1, P2: Pointer; { ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ }.
Begin.
Gd := VGA; Gm:=2; InitGraph (Gd, Gm, 'c: p7gi');
Size := ImageSize (0, 0, 20, 100); { ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΠΈ }.
SetLineStyle (0, 0, 3); { ΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΡΡΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ }.
PieSlice (10, 10, 0, 360, 10); { Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΠΊΡΡΠ³ }.
FillEllipse (10, 40, 10, 20); { Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΡΠ»Π»ΠΈΠΏΡ }.
Line (8, 60, 0, 100); Line (12, 60, 20, 100); { Π»ΠΈΠ½ΠΈΠΈ }.
{ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· }.
PieSlice (60, 10, 0, 360, 10);
FillEllipse (60, 40, 10, 20);
Line (60, 60, 60, 100);
{ Π²ΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ°Π· }.
GetMem (P1, Size); { P1 — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π°Π΄ΡΠ΅ΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°}.
GetImage (0, 0, 20, 100, P1^);{P1^ - ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ (Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄) ΠΎΠ±ΡΠ°Π·Π°}.
GetMem (P2, Size); { P2 — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π°Π΄ΡΠ΅ΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°}.
GetImage (50, 0, 70, 100, P2^);{P2^ - ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ (Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄) ΠΎΠ±ΡΠ°Π·Π° }.
x:=0; y:=200; { ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ }.
Readln; ClearDevice; Line (0, 300, 600, 300); { «Π΄ΠΎΡΠΎΠ³Π°» }.
Repeat { ΠΈΠΌΠΈΡΠ°ΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ }.
PutImage (x, y, P1^, 1); delay (50); PutImage (x, y, P1^, 1);
x:=x+10; { ΡΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΠΏΠΎΠ»ΡΠ°Π³Π° }.
PutImage (x, y, P2^, 1); delay (50); PutImage (x, y, P2^, 1);
x:=x+10.
Until x > GetmaxX — 20; { Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°Ρ }.
FreeMem (P1, Size); FreeMem (P2, Size); CloseGraph.
End.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ Π·Π°Π½ΠΎΡΡΡΡΡ Π΄Π²Π° ΠΎΠ±ΡΠ°Π·Π° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠΊΠ° Ρ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ³. ΠΠΊΡΠ°Π½ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΠΈ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΎΡΠΈ «Ρ ». ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ 0, 05 Ρ., Π·Π°ΡΠ΅ΠΌ ΠΈΡΡΠ΅Π·Π°Π΅Ρ, Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ XorPut.