В отличие от метода
<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 для тега <canvas>. Предполагается, что текущий контур определен.</b>
<b>function hittest(event) {</b>
<b> var canvas = this; // Вызывается в контексте холста</b>
<b> var с = canvas.getContext("2d"); // Получить контекст рисования для холста</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>