Задание стиля линий

Задание стиля линий

Канва позволяет задать стиль линий, включающий в себя некоторые параметры, которые управляют формой их начальных и конечных точек и точек соединения линий друг с другом. Давайте их рассмотрим.

Свойство lineCap задает форму начальных и конечных точек линий. Его значение может быть одной из следующих строк:

— "butt" — начальная и конечная точки как таковые отсутствуют (значение по умолчанию);

— "round" — начальная и конечная точки имеют вид кружков;

— "square" — начальная и конечная точки имеют вид квадратиков.

Web-сценарий из листинга 22.6 рисует толстую прямую линию, начальная и конечная точки которой имеют вид кружков.

Листинг 22.6

ctxCanvas.beginPath();

ctxCanvas.lineWidth = 10;

ctxCanvas.lineCap = "round";

ctxCanvas.moveTo(20, 20);

ctxCanvas.lineTo(180, 20);

ctxCanvas.stroke();

Свойство lineJoin задает форму точек соединения линий друг с другом. Его значение может быть одной из следующих строк:

— "miter" — точки соединения имеют вид острого или тупого угла (значение по умолчанию);

— "round" — точки соединения, образующие острые углы, скругляются;

— "bevel" — острые углы, образуемые соединяющимися линиями, как бы срезаются.

Web-сценарий из листинга 22.7 рисует контур треугольника толстыми линиями, причем точки соединения этих линий, образующие острые углы, будут срезаться.

Листинг 22.7

ctxCanvas.beginPath();

ctxCanvas.lineWidth = 10;

ctxCanvas.lineJoin = "bevel";

ctxCanvas.moveTo(20, 20);

ctxCanvas.lineTo(380, 20);

ctxCanvas.lineTo(200, 280);

ctxCanvas.closePath();

ctxCanvas.stroke();

Свойство miterLimit задает дистанцию, на которую могут выступать острые углы, образованные соединением линий, от точки соединения, когда для свойства lineJoin задано значение "miter". Углы, выступающие на б?льшую дистанцию, будут срезаны.

Значение данного свойства задается в пикселах в виде числа. Каково его значение по умолчанию, автору выяснить не удалось.

Листинг 22.8 содержит исправленный вариант Web-сценария, приведенного ранее.

Листинг 22.8

ctxCanvas.beginPath();

ctxCanvas.lineJoin = "miter";

ctxCanvas.lineWidth = 10;

ctxCanvas.miterLimit = 1;

ctxCanvas.moveTo(20, 20);

ctxCanvas.lineTo(380, 20);

ctxCanvas.lineTo(200, 280);

ctxCanvas.closePath();

ctxCanvas.stroke();

Дистанция, на которую могут выступать острые углы, образованные соединением линий контура, не должна превышать одного пиксела. Углы, выступающие на б?льшую дистанцию, будут срезаны.

Данный текст является ознакомительным фрагментом.