Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HTML 5, CSS 3 ΠΈ Web 2.0. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° соврСмСнных Web-сайтов». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 78

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Ρ€ΠΎΠ½ΠΎΠ²

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, сразу послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Web-страницы ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠ°Π½Π²Ρ‹, ΠΏΠ΅Ρ€ΠΎ находится Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ [0,0], Ρ‚. Π΅. Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΊΠ°Π½Π²Ρ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΎ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠ°Π½Π²Ρ‹, Π³Π΄Π΅ ΠΌΡ‹ собираСмся Π½Π°Ρ‡Π°Ρ‚ΡŒ рисованиС ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, позволяСт ΠΌΠ΅Ρ‚ΠΎΠ΄ moveTo:

<контСкст рисования>.moveTo(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°Π΄Π°ΡŽΡ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€ΠΎ, Π² пиксСлах Π² Π²ΠΈΠ΄Π΅ чисСл. ΠœΠ΅Ρ‚ΠΎΠ΄ moveTo Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ctxCanvas.moveTo(200, 150);

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€ΠΎ Π² Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΠ°Π½Π²Ρ‹ cnv β€” Π² Ρ‚ΠΎΡ‡ΠΊΡƒ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ [200,150].

ΠŸΡ€ΡΠΌΡ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ

ΠŸΡ€ΡΠΌΡ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ всСго. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ lineTo:

<контСкст рисования>.lineTo(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>)

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° рисуСмой прямой Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ мСстС, Π³Π΄Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСно ΠΏΠ΅Ρ€ΠΎ (ΠΎΠ± этом ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅). ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² пиксСлах Π·Π°Π΄Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° lineTo. ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ПослС рисования прямой Π»ΠΈΠ½ΠΈΠΈ ΠΏΠ΅Ρ€ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π² Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ прямо ΠΈΠ· этой Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ рисованиС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°.

Листинг 22.2

ctxCanvas.beginPath();

ctxCanvas.moveTo(20, 20);

ctxCanvas.lineTo(380, 20);

ctxCanvas.lineTo(200, 280);

ctxCanvas.closePath();

ctxCanvas.stroke();

Web-сцСнарий ΠΈΠ· листинга 22.2 рисуСт Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π±Π΅Π· Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий.

1. Π’Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° beginPath сообщаСм Web-ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ собираСмся Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ слоТной Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ moveTo устанавливаСм ΠΏΠ΅Ρ€ΠΎ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ, Π³Π΄Π΅ начнСтся рисованиС.

3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° lineTo рисуСм Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ станут сторонами Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

4. Π’Ρ€Π΅Ρ‚ΡŒΡŽ сторону ΠΌΡ‹ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Π° Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ closePath, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Web-ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ сам нарисовал Π΅Π΅, Π·Π°ΠΌΠΊΠ½ΡƒΠ² нарисованный Π½Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€.

5. Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ stroke, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ рисованиС Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π±Π΅Π· Π·Π°Π»ΠΈΠ²ΠΊΠΈ.

Π”ΡƒΠ³ΠΈ

Π”ΡƒΠ³ΠΈ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠΆΠ΅ довольно просто. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ arc:

<контСкст рисования>.arc(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>, <радиус>, <Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ»>, <ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ»>,true|false)

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π°Π΄Π°ΡŽΡ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° рисуСмой Π΄ΡƒΠ³ΠΈ Π² Π²ΠΈΠ΄Π΅ числа Π² пиксСлах. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ опрСдСляСт радиус Π΄ΡƒΠ³ΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ Π² пиксСлах ΠΈ Π² Π²ΠΈΠ΄Π΅ числа. Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΈ пятый ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΡƒΠ³Π»Ρ‹ Π΄ΡƒΠ³ΠΈ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ… Π² Π²ΠΈΠ΄Π΅ чисСл; эти ΡƒΠ³Π»Ρ‹ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ оси. Если ΡˆΠ΅ΡΡ‚ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ρ‚ΠΎ Π΄ΡƒΠ³Π° рисуСтся ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки, Π° Ссли false β€” ΠΏΠΎ часовой стрСлкС. ΠœΠ΅Ρ‚ΠΎΠ΄ arc Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

РисованиС Π΄ΡƒΠ³ΠΈ начинаСтся Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСно ΠΏΠ΅Ρ€ΠΎ. ПослС рисования Π΄ΡƒΠ³ΠΈ ΠΏΠ΅Ρ€ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ кончаСтся эта Π΄ΡƒΠ³Π°.

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΡƒΠ³Π»Ρ‹ рисуСмой Π΄ΡƒΠ³ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…, Π° Π½Π΅ Π² градусах. ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΡƒΠ³Π»Π° ΠΈΠ· градусов Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ JavaScript:

radians = (Math.PI / 180) * degrees;

Π—Π΄Π΅ΡΡŒ пСрСмСнная degrees Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»Π° Π² градусах, Π° пСрСмСнная radians Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…. Бвойство PI ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° JavaScript Math Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа Ο€.

Π’ΠΎΡ‚ Web-сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рисуСт ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· Π·Π°Π»ΠΈΠ²ΠΊΠΈ:

ctxCanvas.beginPath();

ctxCanvas.arc(200, 150, 100, 0, Math.PI * 2, false);

ctxCanvas.stroke();

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° arc, Π² частности, значСния Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°, ΠΌΡ‹ Π·Π°Π΄Π°Π²Π°Π»ΠΈ Π² этом случаС.

ΠšΡ€ΠΈΠ²Ρ‹Π΅ Π‘Π΅Π·ΡŒΠ΅

ΠšΡ€ΠΈΠ²Ρ‹Π΅ Π‘Π΅Π·ΡŒΠ΅ β€” это Π»ΠΈΠ½ΠΈΠΈ особой Ρ„ΠΎΡ€ΠΌΡ‹, описываСмыС трСмя ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ: Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ конСчная Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΈ Π² случаС прямой Π»ΠΈΠ½ΠΈΠΈ, Π·Π°Π΄Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅, Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡƒ этой ΠΊΡ€ΠΈΠ²ΠΎΠΉ.


Рис. 22.1. ΠšΡ€ΠΈΠ²Π°Ρ Π‘Π΅Π·ΡŒΠ΅ с двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ


Рис. 22.2. ΠšΡ€ΠΈΠ²Π°Ρ Π‘Π΅Π·ΡŒΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

На рис. 22.1 кривая Π‘Π΅Π·ΡŒΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΡƒΡ‚ΠΎΠ»Ρ‰Π΅Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ, Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ конСчная Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΊΡ€ΡƒΠΆΠΊΠ°ΠΌΠΈ, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ. Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ прямыС Π»ΠΈΠ½ΠΈΠΈ) β€” ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΡ€ΠΈΠ²ΠΎΠΉ. Если ΠΌΡ‹ мыслСнно пСрСмСстим ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π΅ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ измСнится, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, измСнится ΠΈ Ρ„ΠΎΡ€ΠΌΠ° ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅.

На рис. 22.1 прСдставлСна кривая Π‘Π΅Π·ΡŒΠ΅ с двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ всСго.

Но Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, "Π²Ρ‹Ρ€ΠΎΠΆΠ΄Π΅Π½Π½ΡƒΡŽ", Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π‘Π΅Π·ΡŒΠ΅ β€” с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (рис. 22.2). На основС ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π‘Π΅Π·ΡŒΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΡƒΠ³ΠΈ ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ сСкторы, Π² Ρ‡Π΅ΠΌ ΠΌΡ‹ вскорС убСдимся.

Для рисования ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π‘Π΅Π·ΡŒΠ΅ с двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ прСдусмотрСн ΠΌΠ΅Ρ‚ΠΎΠ΄

bezierCurveTo: <контСкст рисования>.bezierCurveTo(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>)

НазначСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° понятно ΠΈΠ· ΠΈΡ… описания. ВсС ΠΎΠ½ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² пиксСлах Π² Π²ΠΈΠ΄Π΅ чисСл. ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

РисованиС ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ начинаСтся Π² Ρ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСно ΠΏΠ΅Ρ€ΠΎ. ПослС рисования ΠΊΡ€ΠΈΠ²ΠΎΠΉ ΠΏΠ΅Ρ€ΠΎ устанавливаСтся Π² Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

Π’ΠΎΡ‚ Web-сцСнарий, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ ΠΊΡ€ΠΈΠ²ΡƒΡŽ Π‘Π΅Π·ΡŒΠ΅ с двумя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ:

ctxCanvas.beginPath();

ctxCanvas.moveTo(100, 100);

ctxCanvas.bezierCurveTo(120, 80, 160, 20, 100, 200);

ctxCanvas.stroke();

РисованиС ΠΊΡ€ΠΈΠ²Ρ‹Ρ… Π‘Π΅Π·ΡŒΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ quadraticCurveTo:<контСкст рисования>.quadraticCurveTo(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>)

ΠžΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅Ρ‚ смысла β€” ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ понятно. ВсС ΠΎΠ½ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² пиксСлах Π² Π²ΠΈΠ΄Π΅ чисСл. ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

РисованиС Ρ‚Π°ΠΊΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ Π‘Π΅Π·ΡŒΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ начинаСтся Π² Ρ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСно ΠΏΠ΅Ρ€ΠΎ. ПослС рисования ΠΊΡ€ΠΈΠ²ΠΎΠΉ ΠΏΠ΅Ρ€ΠΎ устанавливаСтся Π² Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

Π’ΠΎΡ‚ Web-сцСнарий, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΠΉ ΠΊΡ€ΠΈΠ²ΡƒΡŽ Π‘Π΅Π·ΡŒΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ:

ctxCanvas.beginPath();

ctxCanvas.moveTo(100, 100);

ctxCanvas.quadraticCurveTo(200, 100, 200, 200);

ctxCanvas.stroke();

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°ΡΡΡ кривая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ Π΄ΡƒΠ³ΠΈ.

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ листинг 22.3.

Листинг 22.3

ctxCanvas.beginPath();

ctxCanvas.strokeStyle = "red";

ctxCanvas.fillStyle = "red";

ctxCanvas.moveTo(100, 100);

ctxCanvas.quadraticCurveTo(200, 100, 200, 200);

ctxCanvas.lineTo(100, 200);

ctxCanvas.lineTo(100, 100);

ctxCanvas.fill();

Web-сцСнарий ΠΈΠ· листинга 22.3 рисуСт красный сСктор окруТности с красной ΠΆΠ΅ Π·Π°Π»ΠΈΠ²ΠΊΠΎΠΉ. ΠœΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΊΡ€ΠΈΠ²ΡƒΡŽ Π‘Π΅Π·ΡŒΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ Π²ΠΈΠ΄ Π΄ΡƒΠ³ΠΈ, ΠΈ соСдиняСм Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ окруТности.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 22.4.

Листинг 22.4

ctxCanvas.beginPath();

ctxCanvas.moveTo(20, 0);

ctxCanvas.lineTo(180, 0);

ctxCanvas.quadraticCurveTo(200, 0, 200, 20);

ctxCanvas.lineTo(200, 80);

ctxCanvas.quadraticCurveTo(200, 100, 180, 100);

ctxCanvas.lineTo(20, 100);

ctxCanvas.quadraticCurveTo(0, 100, 0, 80);

ctxCanvas.lineTo(0, 20);

ctxCanvas.quadraticCurveTo(0, 0, 20, 0);

ctxCanvas.stroke();

Web-сцСнарий ΠΈΠ· листинга 22.4 рисуСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ со скруглСнными ΡƒΠ³Π»Π°ΠΌΠΈ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сами с Π½ΠΈΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ описанныС Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ strokeRect ΠΈ fillRect. Но ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, рисуСмыС этими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой нСзависимыС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ слоТного ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π² составС слоТного ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, Π½Π°ΠΌ придСтся ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ rect:

<контСкст рисования>.rect(<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°>, <ΡˆΠΈΡ€ΠΈΠ½Π°>,<высота>)

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π°Π΄Π°ΡŽΡ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° рисуСмого ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² пиксСлах Π² Π²ΠΈΠ΄Π΅ чисСл. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚, соотвСтствСнно, ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Ρ‚Π°ΠΊΠΆΠ΅ Π² пиксСлах ΠΈ Ρ‚ΠΎΠΆΠ΅ Π² Π²ΠΈΠ΄Π΅ чисСл. ΠœΠ΅Ρ‚ΠΎΠ΄ rect Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.