JavaScript. Подробное руководство, 6-е издание, стр. 465

В отличие от метода

<b>rect(),</b>
метод
<b>fillRect()</b>
не влияет на текущую позицию пера и текущий контур.

<b>void fillText(string text, double x, у, [double maxWidth])</b>

Метод

<b>fillText()</b>
рисует текст
<b>text</b>
, используя текущие значения свойств
<b>font</b>
и
<b>fillStyle</b>
. Аргументы х и у определяют координаты, где должен выводиться текст, но интерпретация этих аргументов зависит от свойств
<b>textAlign</b>
и
<b>textBaseline</b>
, соответственно.

Если свойство

<b>textAlign</b>
имеет значение «left» или «start» (по умолчанию), в случае использования направления для письма слева направо (также по умолчанию), или «end» в случае использования письма справа налево, текст выводится правее указанной координаты X. Если свойство
<b>textAlign</b>
имеет значение «center», текст центрируется по горизонтали относительно указанной координаты X. В противном случае (если
<b>textAlign</b>
имеет значение «right», «end» для письма слева направо или «start» для письма справа налево) текст выводится левее указанной координаты X. Если свойство
<b>textBaseline</b>
имеет значение «alphabetic» (по умолчанию), «bottom» или «ideographic», большинство символов будут нарисованы выше указанной координаты Y. Если свойство
<b>textBaseline</b>
имеет значение «center», текст будет центрироваться по вертикали относительно указанной координаты Y. А если свойство
<b>textBaseline</b>
имеет значение «top» или «hanging», большинство символов будут нарисованы ниже указанной координаты Y.

Необязательный аргумент

<b>maxWidth</b>
определяет максимальную ширину текста. Если текст в аргументе
<b>text</b>
окажется шире, чем определено аргументом
<b>maxWidth</b>
, он будет нарисован более мелким или более узким шрифтом.

<b>ImageData getImageData(double sx, sy, siv, sh)</b>

Аргументы этого метода определяют непреобразованные координаты прямоугольной области холста. Метод копирует пикселы из этой области холста в новый объект

<b>ImageData</b>
и возвращает этот объект. Как получить доступ к составляющим цвета и альфа-компонентам отдельных пикселов, описывается в справочной статье
<b>ImageData</b>
.

Компоненты RGB цвета возвращаемых пикселов не учитывают значение альфа-компонента. Если какая-либо часть запрошенной области оказывается за границами холста, соответствующие пикселы в объекте

<b>ImageData</b>
устанавливаются в черный прозрачный цвет (все компоненты цвета равны нулю). Если для представления одного CSS-пиксела реализация использует несколько аппаратных пикселов, значения свойств
<b>width</b>
и
<b>height</b>
возвращаемого объекта
<b>ImageData</b>
будут отличаться от значений аргументов sw и sh.

Подобно методу

<b>Canvas.toDataURL(),</b>
этот метод препятствует утечке информации между доменами. Метод
<b>getlmageData()</b>
возвращает объект
<b>ImageData</b>
, только если изображение в холсте имеет общее происхождение с документом; в противном случае он возбуждает исключение. Считается, что холст не имеет общего происхождения с документом, если в нем содержалось изображение (созданное непосредственно с помощью метода
<b>drawlmage()</b>
или косвенно, с помощью объекта
<b>CanvasPattern</b>
), имеющее иное происхождение, отличное от происхождения содержащего его документа. Кроме того, считается, что элемент <canvas> имеет неясное происхождение, если в нем рисовался текст с использованием веб-шрифтов, имеющих иное происхождение.

<b>boolean isPointInPath(double х, у)</b>

Метод

<b>isPointlnPath()</b>
возвращает true, если указанная точка попадает в пределы текущего контура; в противном случае он возвращает false. Указанные координаты интерпретируются в системе координат, не преобразованной с применением текущей матрицы преобразования. Аргумент х должен иметь значение между 0 и
<b>canvas.width</b>
, а аргумент у - между 0 и
<b>canvas.height</b>
.

Причина, почему

<b>isPointlnPath()</b>
использует непреобразованные координаты, состоит в том, что он предназначен для «проверки попадания»: определения попадания указателя мыши во время щелчка (например) в область холста, ограниченную контуром. Чтобы выполнить проверку попадания, координаты указателя мыши сначала должны быть преобразованы из координат окна в координаты холста. Если экранные размеры холста отличаются от размеров, определяемых атрибутами
<b>width</b>
и
<b>height</b>
(например, в случае установки атрибутов
<b>style.width</b>
и
<b>style.height</b>
), координаты указателя мыши также необходимо привести к масштабу, соответствующему масштабу системы координат холста. Ниже демонстрируется функция, которая может использоваться как обработчик onclick элемента <canvas> и выполнять необходимые преобразования координат указателя мыши в координаты холста:

<b>// Обработчик onclick для тега &lt;canvas&gt;. Предполагается, что текущий контур определен.</b>

<b>function hittest(event) {</b>

<b>  var canvas = this; // Вызывается в контексте холста</b>

<b>  var с = canvas.getContext(&quot;2d&quot;); // Получить контекст рисования для холста</b>

<b>  // Получить размеры и координаты холста var bb = canvas.getBoundingClientRect();</b>

<b>  // Преобразовать координаты указателя мыши в координаты холста</b>

<b>  var х = (event.clientX-bb.left)*(canvas.width/bb.width);</b>

<b>  var у = (event.clientY-bb.top)*(canvas.height/bb.height);</b>

<b>  // Залить контур, если пользователь щелкнул в его пределах</b>