JavaScript. Подробное руководство, 6-е издание, стр. 368
При вызове с тремя аргументами во втором и третьем аргументах методу
<b>drawImage()</b>При вызове метода
<b>drawImage()</b>При вызове метода
<b>drawImage()</b>Пример 21.9 демонстрирует простой случай применения метода drawImage(). В нем используется версия метода с девятью аргументами, чтобы скопировать фрагмент холста, увеличенный и повернутый, обратно в тот же самый холст. Как видно на рис. 21.15, изображение было увеличено достаточно, чтобы проявилась его растровая структура и можно было наблюдать полупрозрачные пикселы, которые использованы для сглаживания краев линии.

Пример 21.9, Использование метода drawlmagef)
<b>// Нарисовать линию в верхнем левом углу</b><b>с.moveTo(5,5);</b><b>с. ПпеТо(45,45);</b><b>с.lineWidth = 8;</b><b>с.lineCap = "round";</b><b>с.stroke();</b><b>// Определить преобразование системы координат </b><b>с.translate(50,100);</b><b>с. rotate(-45*Math.PI/180); // Разгладить линию</b><b>с. scale(10,10); // Увеличить ее, чтобы были видны отдельные пикселы</b><b>// С помощью drawlmage скопировать линию </b><b>с.drawlmage(c.canvas,</b><b> 0, 0, 50, 50, // исходная область: непреобразованная </b><b> 0, 0, 50, 50); // область назначения: преобразованная</b>Помимо возможности копировать изображение в холст, имеется также возможность извлекать содержимое холста в виде изображения с помощью метода
<b>toDataURL().</b><b>toDataURL()</b><b>Canvas</b><b>CanvasRenderingContext2D</b><b>toDataURL()</b><b>data:.</b><b><img>,</b><b>var img = document.сreateElement("img”); // Создать элемент <img> </b><b>img.src = canvas.toDataURL(); // Установить его атрибут src</b><b>document.body.appendChild(img); // Добавить элемент в документ</b>Все броузеры в обязательном порядке поддерживают формат PNG изображений. Некоторые реализации могут также поддерживать другие форматы, и вы можете указать желаемый MIME-тип в необязательном первом аргументе в вызове метода
<b>toDataURL().</b>Существует одно важное ограничение, связанное с безопасностью, о котором следует знать, планируя применять метод
<b>toDataURL().</b><b>toDataURL()</b><b><canvas>,</b><b>drawImage(),</b><b>CanvasPattern</b><b><canvas></b>21.4.13. Композиция
При рисовании линий и текста, заливке областей или копировании изображений может получиться так, что новые пикселы будут накладываться сверху на уже существующие в холсте. При рисовании непрозрачных пикселов они просто будут замещать уже имеющиеся пикселы. Но при рисовании полупрозрачных пикселов новые («исходные») пикселы будут объединяться (комбинироваться) со старыми («целевыми») пикселами так, что старые пикселы будут видны сквозь новые, с учетом степени прозрачности этих пикселов.
Этот процесс объединения новых полупрозрачных исходных пикселов с существующими целевыми пикселами называется композицией, а процесс композиции, описанный выше, используется по умолчанию при объединении пикселов. Однако композиция нужна не всегда. Представьте, что вы нарисовали в холсте рисунок, использовав полупрозрачный цвет, и теперь хотите внести в холст временные изменения, а позднее восстановить оригинальный рисунок. Самый простой способ реализовать это состоит в том, чтобы холст (или его область) скопировать в другой, неотображаемый холст с помощью метода
<b>drawImage().</b>