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

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

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ опрСдСляСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создаваСмой ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ "распространяСтся" Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚. Он задаСтся Π² Π²ΠΈΠ΄Π΅ числа ΠΎΡ‚ 0.0 (Π½Π°Ρ‡Π°Π»ΠΎ прямой) Π΄ΠΎ 1.0 (ΠΊΠΎΠ½Π΅Ρ† прямой). Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π² Π²ΠΈΠ΄Π΅ строки; ΠΏΡ€ΠΈ этом допустимы всС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ описания Ρ†Π²Π΅Ρ‚Π°, упомянутыС Π² Π½Π°Ρ‡Π°Π»Π΅ этой Π³Π»Π°Π²Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ addColorStop Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

lgSample.addColorStop(0, "black");

lgSample.addColorStop(0.4, "rgba(0, 0, 255, 0.5)");

lgSample.addColorStop(1, "#FF0000");

Π­Ρ‚ΠΎΡ‚ Web-сцСнарий создаСт Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ Π½Π°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π΅ Ρ‚Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚;

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, отстоящСй Π½Π° 40 % Π΄Π»ΠΈΠ½Ρ‹ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой ΠΎΡ‚ Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ синий Ρ†Π²Π΅Ρ‚;

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ красный Ρ†Π²Π΅Ρ‚.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ этап β€” собствСнно использованиС Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°. Для этого ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° CanvasGradient слСдуСт ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ свойству strokeStyle ΠΈΠ»ΠΈ fillStyle. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ свойство, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, Π·Π°Π΄Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ Π»ΠΈΠ½ΠΈΠΉ

ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ², Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ β€” Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΎΠΊ:

ctxCanvas.fillStyle = lgSample;

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ вопрос. И рассмотрим ΠΌΡ‹ Π΅Π³ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ созданного Ρ€Π°Π½Π΅Π΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ нарисовали Π½Π° ΠΊΠ°Π½Π²Π΅ Ρ‚Ρ€ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊ Π½ΠΈΠΌ наш Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ нарисован Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ [0,0] (Π² Π½Π°Ρ‡Π°Π»Π΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°, Π² смыслС, Π² Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅), Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ [30,20] (Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅), Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ [80,40] (Π² ΠΊΠΎΠ½Ρ†Π΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° β€” Π΅Π³ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅). Π˜Π½Π°Ρ‡Π΅ говоря, ΠΌΡ‹ "расставили" наши ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ Π²ΠΎ всСх ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

Как Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΊΡ€Π°ΡˆΠ΅Π½Ρ‹ эти ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ? Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим.

β€” ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΡ€Π°ΡˆΠ΅Π½, Π² основном, Π² Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

β€” Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΡ€Π°ΡˆΠ΅Π½, Π² основном, Π² ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ синий Ρ†Π²Π΅Ρ‚, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

β€” Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΡ€Π°ΡˆΠ΅Π½, Π² основном, Π² красный Ρ†Π²Π΅Ρ‚, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, созданный Π½Π°ΠΌΠΈ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π½Π΅ "втиснулся" Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· нарисованных ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° ΠΊΠ°ΠΊ Π±Ρ‹ зафиксировался Π½Π° самой ΠΊΠ°Π½Π²Π΅, Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ "проявили" Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ этого Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ задаСтся для Ρ†Π΅Π»ΠΎΠΉ ΠΊΠ°Π½Π²Ρ‹, Π° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½, ΠΎΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Если ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ какая-Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π° Π±Ρ‹Π»Π° ΠΎΠΊΡ€Π°ΡˆΠ΅Π½Π° Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, придСтся Π·Π°Π΄Π°Ρ‚ΡŒ для этого Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ прямой, Ρ‡Ρ‚ΠΎ- Π±Ρ‹ ΠΎΠ½ "ΠΏΠΎΠΊΡ€Ρ‹Π»" всю Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π˜Π½Π°Ρ‡Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

Листинг 22.9

var lgSample = ctxCanvas.createLinearGradient(0, 0, 100, 50);

lgSample.addColorStop(0, "black"); lgSample.addColorStop(0.4, "rgba(0, 0, 255, 0.5)"); lgSample.addColorStop(1, "#FF0000"); ctxCanvas.fillStyle = lgSample;

ctxCanvas.fillRect(0, 0, 200, 100);

Web-сцСнарий ΠΈΠ· листинга 22.9 рисуСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈ заполняСт Π΅Π³ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ созданному Ρ€Π°Π½Π΅Π΅ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ рисуСмого ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ посмотритС, какая Ρ‡Π°ΡΡ‚ΡŒ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π² Π½Π΅ΠΌ появится.

Π Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚

Π Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ (Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚) описываСтся двумя Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π° окруТностями. "РаспространяСтся" ΠΎΠ½ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ внСшнСй Π²ΠΎ всС стороны. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° расставлСны ΠΌΠ΅ΠΆΠ΄Ρƒ этими окруТностями.

Π Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π² Ρ‚Ρ€ΠΈ этапа.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап β€” Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° createRadialGradient β€” созданиС Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°:

<контСкст рисования>.createRadialGradient (<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности>,<радиус Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности>,<Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π° внСшнСй окруТности>,<Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π° внСшнСй окруТности>,<радиус внСшнСй окруТности>)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°Π΄Π°ΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² ΠΈ радиусы ΠΎΠ±Π΅ΠΈΡ… окруТностСй, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚. Они Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² пиксСлах Π² Π²ΠΈΠ΄Π΅ чисСл.

ΠœΠ΅Ρ‚ΠΎΠ΄ createRadialGradient Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° CanvasGradient, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ созданный Π½Π°ΠΌΠΈ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚.

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

var rgSample = ctxCanvas.createRadialGradient(100, 100, 10, 150, 100, 120);

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ создаСт Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ rgSample. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ "Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ" ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности, Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ [100,100], Π° радиус Ρ€Π°Π²Π΅Π½ 10 пиксСлам, ΠΊ внСшнСй окруТности с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ [150,100] ΠΈ радиусом 120 пиксСлов.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап β€” расстановка ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ β€” выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° addColorStop ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° CanvasGradient:

<Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚>.addColorStop(<ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ>, <Ρ†Π²Π΅Ρ‚>)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ опрСдСляСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создаваСмой ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈ внСшнСй окруТностями. Он задаСтся Π² Π²ΠΈΠ΄Π΅ числа ΠΎΡ‚ 0.0 (Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°, Ρ‚. Π΅. внутрСнняя ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ) Π΄ΠΎ 1.0 (ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°, Ρ‚. Π΅. внСшняя ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ). Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, Π·Π°Π΄Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅.

Как ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚, Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ.

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

rgSample.addColorStop(0, "#CCCCCC");

rgSample.addColorStop(0.8, "black");

rgSample.addColorStop(1, "#00FF00");

Π­Ρ‚ΠΎΡ‚ Web-сцСнарий создаСт Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ Π½Π°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π΅ Ρ‚Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ окруТностями (Ρ‚. Π΅. Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ окруТности) ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ сСрый Ρ†Π²Π΅Ρ‚;

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, отстоящСй Π½Π° 80 % Π΄Π»ΠΈΠ½Ρ‹ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ окруТностями ΠΎΡ‚ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚;

β€” Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ окруТностями (Ρ‚. Π΅. Π½Π° внСшнСй окруТности) ΠΈ Π·Π°Π΄Π°ΡŽΡ‰ΡƒΡŽ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ этап β€” использованиС Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° β€” выполняСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ для Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°, Ρ‚. Π΅. присваиваниСм Π΅Π³ΠΎ свойству strokeStyle ΠΈΠ»ΠΈ fillStyle:

ctxCanvas.fillStyle = rgSample;

Π Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ β€” фиксируСтся Π½Π° ΠΊΠ°Π½Π²Π΅ ΠΈ частично "проявляСтся" Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ…, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½.

Листинг 22.10 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Листинг 22.10

var rgSample = ctxCanvas.createRadialGradient(100, 100, 10, 150, 100, 120);

rgSample.addColorStop(0, "#CCCCCC");

rgSample.addColorStop(0.8, "black");

rgSample.addColorStop(1, "#00FF00");

ctxCanvas.fillStyle = rgSample;

ctxCanvas.fillRect(0, 0, 200, 200);

Web-сцСнарий ΠΈΠ· листинга 22.10 рисуСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΈ заполняСт Π΅Π³ΠΎ Ρ€Π°Π΄ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ созданному Ρ€Π°Π½Π΅Π΅ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈ внСшнСй окруТностСй, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… этот Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Π·Π° счСт Ρ‡Π΅Π³ΠΎ достигаСтся вСсьма ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ своими Π³Π»Π°Π·Π°ΠΌΠΈ.

ГрафичСский Ρ†Π²Π΅Ρ‚

ГрафичСский Ρ†Π²Π΅Ρ‚ β€” это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ графичСским ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ содСрТимоС ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ графичСского Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π½Π²Ρ‹.

ГрафичСский Ρ†Π²Π΅Ρ‚ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π² Ρ‚Ρ€ΠΈ этапа.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² качСствС Ρ†Π²Π΅Ρ‚Π° содСрТимоС графичСского Ρ„Π°ΠΉΠ»Π°. Π€Π°ΠΉΠ» Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Web-обозрСватСля Image, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, хранящССся Π² Ρ„Π°ΠΉΠ»Π΅.

Π‘Π½Π°Ρ‡Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎ Π³Π»Π°Π²Π΅ 14 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new Π½Π°ΠΌ потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image:

var imgSample = new Image();

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Image ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойство src, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСс Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ графичСского Ρ„Π°ΠΉΠ»Π° Π² Π²ΠΈΠ΄Π΅ строки. Если ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ этому свойству ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСс ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ»Π°, Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» тотчас Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½:

imgSample.src = "graphic_color.jpg";

Π’ дальнСйшСм ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image для создания графичСского Ρ†Π²Π΅Ρ‚Π°.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ этап β€” собствСнно созданиС графичСского Ρ†Π²Π΅Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° createPattern:

<контСкст рисования>.createPattent(<графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°Π½Π²Π°>,<Ρ€Π΅ΠΆΠΈΠΌ повторСния>)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image ΠΈΠ»ΠΈ ΠΊΠ°Π½Π²Ρƒ Π² Π²ΠΈΠ΄Π΅ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° HTMLCanvasElement.

Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ графичСского изобраТСния мСньшС, Ρ‡Π΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ графичСский Ρ†Π²Π΅Ρ‚. Π’ этом случаС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ повторяСтся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ "Π²Ρ‹ΠΌΠΎΡΡ‚ΠΈΡ‚ΡŒ" линию ΠΈΠ»ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΡƒ. Π Π΅ΠΆΠΈΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повторСния Π·Π°Π΄Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° createPattern. Π•Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строк: