< > ↑ Вгору

1. Об`єкт canvas

ПЕРЕВІРКА ПІДТРИМКИ CANVAS

Приклад: Щоб проілюструвати роботу канваса намалюємо два напівпрозорого кольору (червоного і синього) квадрата, що перекривають один одного.

. . .
 function draw () {
        var canvas = document.getElementById ("canvas");
        if ( canvas. getContext) {
          var ctx = canvas. getContext (" 2d ");

          ctx. fillStyle = "rgb (200, 0, 0)";
          ctx. fillRect = ( 10, 10, 50, 50 );

          ctx. fillStyle = "rgba (0, 0, 200, 0.5)";
          ctx. fillRect = ( 30, 30, 50, 50 );
        }
       }
. . .

МАЛЮВАННЯ ФІГУР (ПРИМІТИВІВ)

ВИБІР КОЛЬОРУ В CANVAS

Для вибору кольору заливки використовується метод:

Приклад: Намалювати червоний напівпрозорий квадрат 40 х 40, починаючи з нульової координати.

Рішення:

. . .
 function draw () {
        var canvas = document.getElementById ("canvas");
        if ( canvas. getContext) {
          var ctx = canvas. getContext (" 2d ");

          ctx. fillStyle = "rgba (255, 0, 0, 0.5)";
          ctx. fillRect = ( 0, 0, 40, 40 );
        }
       }
. . .

Завдання 1: Намалювати горизонтальний ряд квадратів зі сторонами 10 на відстані 15 від верхнього краю кинувся і з такими горизонтальними координатами 10, 30, 50, 70, ..., 130.

Малювання шляхів в canvas

Шлях являє собою набір точок, з'єднаних прямими лініями або кривими. Лінії можуть бути різної ширини, кривизни і кольору

Розглянемо етапи побудови шляхів і функції малювання шляхів в javascript canvas :

  1. Створення шляху. Коли шлях створений інші команди вже працюють над створеним шляхом:

    beginPath ()

    void ctx. beginPath();

  2. Вибір методу побудови шляху (крива, пряма, крива Безьє) або перехід в нову точку:

    • перехід в нову точку з вказаними координатами:

      CanvasRenderingContext2D.moveTo ()

      void ctx. moveTo(x, y);

    • з'єднання прямою лінією останньої використаної координатою з точкою x, y:

      CanvasRenderingContext2D.lineTo ()

      void ctx. lineTo;(x, y)

    • додавання кубічної кривої Безьє (потрібно три точки: перші дві (cp1x, cp1y, cp2x, cp2y) - контрольні, остання - кінець лінії; початковою точкою є остання зазначена точка, або точка, до якої перейшли командою moveTo ()

      CanvasRenderingContext2D.bezierCurveTo ()

      void ctx. bezierCurveTo(cp1x , cp1y , cp2x , cp2y , x , y );

    • додавання квадратичної кривої Безьє (cpx - координата х контрольної точки, cpy - координата y контрольної точки):

      CanvasRenderingContext2D.quadraticCurveTo ()

      void ctx. quadraticCurveTo (cpx, cpy, x, y);

    • додавання дуги з центром в точці x і y і радіусом r з позиції startAngle до endAngle (за замовчуванням рух дуги за годинниковою стрілкою)

      CanvasRenderingContext2D.arc ()

      void ctx. arc(x, y, radius, startAngle, endAngle [, anticlockwise]);

    • додавання дуги, з'єднаної з попередньою точкою прямою лінією:

      CanvasRenderingContext2D.arcTo ()

      void ctx. arcTo (x1, y1, x2, y2, radius);

    • додавання еліпса до шляху з центром в точці x і y і радіусом radiusX і radiusY з початком в startAngle і закінченням у endAngle :

      CanvasRenderingContext2D.ellipse ()

      void ctx. ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);

    • створення прямокутного шляху:

      CanvasRenderingContext2D.rect ()

      void ctx. rect(x, y, width, height);

  3. Кінець шляху - з'єднанням прямою лінією передостанній точки з початковою точкою шляху

    closePath ()

    void ctx. closePath();

  4. Малювання шляху:

    stroke()

    void ctx. stroke();
    void ctx. stroke( path );

  5. Зафарбування внутрішньої області шляху:

    fill ()

    void ctx. fill();
    void ctx. fill(path);

Приклад: Намалювати трикутник червоного кольору з гранями різного кольору

Рішення:

var canvas = document. getElementById (" canvas");
var ctx = canvas. getContext (" 2d ");

ctx. fillStyle() = "rgb (255, 0, 0)";
ctx. beginPath(); // початок малювання
ctx. moveTo(20, 20); // рух до точки 20,20
ctx. strokeStyle = " blue "
ctx. lineTo(200, 20); // з точки 20, 20 малювання лінії до точки 200,20
ctx. strokeStyle = " green ";
ctx. lineTo(120, 120); // з точки 200, 20 малювання лінії до точки 120,120
ctx. closePath(); // малювання останньої лінії трикутника
ctx. stroke (); // отрисовка
ctx. fill (); // заливка

Завдання 2: Намалювати вертикальний ряд кіл радіусом 10 на відстані 100 від верхнього краю екрану і з такими горизонтальними координатами 50, 80, 110, 140, ..., 290.
* розфарбувати кола

Завдання 3: «Кола на воді». Намалюйте пару десятків концентричних кіл, тобто кіл різного радіусу, але мають загальний центр.

Завдання 4: Відтворити зображення за допомогою програми: