English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник по использованию Canvas для рисования графиков на JavaScript

Из-за того, что в последние два года HTML5 очень популярен, я изучил его, недавно у меня была идея, которая также требует использования связанных функций HTML, поэтому я решил хорошо выучить это.

Я хорошо изучил функции Canvas, чувствую, что функциональность взаимодействия в客户端 HTML5 становится все более сильной, сегодня я изучил рисование Canvas, вот несколько примеров, запомню, чтобы использовать их в будущем.

1. Использование Canvas для рисования прямой линии:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.moveTo(20,30); // Первый пункт
      cans.lineTo(120,90); // Второй пункт
      cans.lineTo(220,60); // Третий пункт (от второго пункта)
      cans.lineWidth=3;
      cans.strokeStyle = 'red';
      cans.stroke();
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Здесь используются два API метода, moveTo и lineTo, которые являются начальными и конечными координатами отрезка, переменные (X координата, Y координата), strokeStyle и stroke - это стиль рисования пути и сам путь.

2. Рисование градиентной линии

Линейная линия градиента создает эффект постепенного изменения цвета,当然, стиль градиента может следовать направлению пути или не следовать ему:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.moveTo(0,0);
      cans.lineTo(400,300);
      var gnt1 = cans.createLinearGradient(0,0,400,300); // Линейный градиент с начальными и конечными координатами
      gnt1.addColorStop(0,'red'); // Создание начального цвета градиента, 0 означает смещение, личное понимание - это относительная позиция на прямой, максимальное значение 1, в одном градиенте можно указать любое количество цветов градиента
      gnt1.addColorStop(1,'yellow');
      cans.lineWidth=3;
      cans.strokeStyle = gnt1;
      cans.stroke();
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

3. Рисование прямоугольника или квадрата:

Такой прямоугольный контур в HTML4 можно создать только с помощью серверного кода, а теперь HTML5 предоставляет функцию Canvas, которая легко позволяет нарисовать прямоугольник,所以说 преимущества HTML5 очень высоки.

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.fillStyle = 'yellow';
      cans.fillRect(30,30,340,240);
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Здесь используется метод - fillRect() - по прямому значению этого метода можно понять, что это заливка прямоугольника, стоит отметить, что параметры fillRect(X,Y,Ширина,Высота) отличаются от координат в математике, подробности см.

Здесь X, Y - это относительные координаты, начинающиеся от верхнего левого угла Canvas, запомните это!

4. Рисование простого прямоугольного контура

В предыдущем примере говорилось о том, чтобы нарисовать прямоугольник с заливкой цвета, а в этом примере просто нарисован прямоугольник без заливки.

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.strokeStyle = 'red';
      cans.strokeRect(30,30,340,240);
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Это очень просто, как и в предыдущем примере, только вместо fill используется stroke, подробности см. в предыдущем примере.

5. Рисование прямоугольника с линейным градиентом

Градиент - это довольно неплохой эффект для заливки, комбинируя примеры 2 и 3, мы можем создать градиентный прямоугольник

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      var gnt1 = cans.createLinearGradient(10,0,390,0);
      gnt1.addColorStop(0,'red');
      gnt1.addColorStop(0.5,'green');
      gnt1.addColorStop(1,'blue');
      cans.fillStyle = gnt1;
      cans.fillRect(10,10,380,280);
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Не нужно объяснять, запомните fillRect(X,Y,Ширина,Высота) и все.

6. Заполнение круга

Круглые объекты имеют广泛应用,естественно, это также включает эллипсы.

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.beginPath();
      cans.arc(200,150,100,0,Math.PI*2,true);
      cans.closePath();
      cans.fillStyle = 'green'; //本来这里最初使用的是red,截图一看,傻眼了,怕上街被爱国者打啊,其实你懂的~~
      cans.fill();
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Использование метода arc в данном случае arc(X,Y,Radius,startAngle,endAngle,anticlockwise), что означает (координата X центра круга, координата Y центра круга, радиус, начальный угол (радианы), конечный угол (радианы), рисуется ли по часовой стрелке);

Сравнение параметров arc:

a、cans.arc(200,150,100,0,Math.PI,true);

c、cans.arc(200,150,100,0,Math.PI/2,true);[/code]

c、cans.arc(200,150,100,0,Math.PI/2,true);

d、cans.arc(200,150,100,0,Math.PI/2,false);

7、Круговая область

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      cans.beginPath();
      cans.arc(200,150,100,0,Math.PI*2,false);
      cans.closePath();
      cans.lineWidth = 5;
      cans.strokeStyle = 'red';
      cans.stroke();
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="400px" height="300px">4</canvas>
  </body>
</html>

Здесь не объясняется, как и в предыдущем примере, lineWidth контролирует ширину линии.

8、Круговая градиентная заливка

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
  </head>
  <style type="text/css">
    canvas{border:dashed 2px #CCC}
  </style>
  <script type="text/javascript">
    function $$(id){
      return document.getElementById(id);
    }
    function pageLoad(){
      var can = $$('can');
      var cans = can.getContext('2d');
      var gnt = cans.createRadialGradient(200,300,50,200,200,200);
      gnt.addColorStop(1,'red');
      gnt.addColorStop(0,'green');
      cans.fillStyle = gnt;
      cans.fillRect(0,0,800,600);
    }
  </script>
  <body onload="pageLoad();">
    <canvas id="can" width="800px" height="600px">4</canvas>
  </body>
</html>

Здесь необходимо пояснить метод createRadialGradient, параметры: (Xstart,Ystart,radiusStart,XEnd,YEnd,radiusEnd), то есть, при выполнении градиента используются два круга: один исходный круг и один градиентный круг. На самом деле,这种方式 с использованием координат и радиуса может реализовать множество стилей, например

Объемный круг

var gnt = cans.createRadialGradient(200,150,0,200,50,250);
gnt.addColorStop(0,'red');
gnt.addColorStop(1,'#333');

Вот и все, что было в этой статье, надеюсь, это поможет вам в изучении. Также希望大家多多支持呐喊教程。

Заявление: содержимое статьи взято из Интернета, авторские права принадлежат соответствующему автору, материал предоставлен пользователями Интернета в порядке добровольного вклада и загрузки, сайт не имеет права собственности на него, материал не был отредактирован вручную, и сайт не несет ответственности за него. Если вы обнаружите материалы,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для сообщения о нарушении,并提供相关证据. При подтверждении факта нарушения сайт незамедлительно удалят涉嫌侵权的内容。

Основной учебник
Тебе может понравиться