Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

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

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

boolean isPointInPath(double х, у)

Метод

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

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

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

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

function hittest(event) {

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

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

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

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

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

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

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

if (с.isPointInPath(x,у)) с.fill;

}

void lineTo(double x, double y)

Метод

lineTo
добавляет прямую линию в текущий подконтур. Линия начинается в текущей позиции пера и заканчивается в точке с координатами (х,у). Когда этот метод возвращает управление, текущая позиция перемещается в точку (х,у).

TextMetrics measureText(string text)

Метод

measureText
вычисляет ширину текста text, которую он займет при рисовании с текущим значением свойства
font
, и возвращает объект
TextMetrics
, содержащий результаты вычислений. На момент написания этих строк возвращаемый объект имел только одно свойство,
width
, а высота текста и параметры описывающего прямоугольника не вычислялись.

void moveTo(double х, double у)

Метод

moveTo
переносит текущую позицию пера в точку (х,у) и создает новый подконтур с начальной точкой в этой точке. Если перед этим существовал подконтур, состоящий из единственной точки, этот пустой подконтур удаляется из текущего контура.

void putImageData(ImageData imagedata, double dxt dy, [sx, sy, sw, sh])

Метод

putImageData
копирует прямоугольную область из объекта
ImageData
в холст. Он выполняет низкоуровневую операцию копирования пикселов, игнорируя значения свойств
globalCompositeOperation
и
globalAlpha
, а также область отсечки, матрицу преобразования и атрибуты, управляющие отображением тени.

Аргументы dx и dy определяют координаты назначения в холсте. Пикселы из объекта в аргументе

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

Последние четыре аргумента определяют исходную прямоугольную область в объекте

ImageData
. Скопированы будут только пикселы из указанной прямоугольной области. Если эти аргументы отсутствуют, объект
ImageData
будет скопирован целиком. Если эти аргументы определяют прямоугольник, выходящий за границы объекта
ImageData
, прямоугольник будет обрезан по этим границам. В аргументах sx и sy допускается передавать отрицательные значения.

  • Читать дальше
  • 1
  • ...
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: