JavaScript/Canvas/Bilder
Aus SELFHTML-Wiki
< JavaScript | Canvas
Neben den bereits vorgestellten Funktionen, mit denen geometrische Formen und Flächen auf das Canvas-Element gezeichnet werden können, ist es mit Canvas auch möglich, Bilder darzustellen. Hierfür existiert die Funktion drawImage
, die in folgenden drei Varianten vorliegt:
-
drawImage(img, dx, dy)
: Zeichnet einimg
,canvas
odervideo
-Element an der angegebenen Position auf das Canvas-Element. -
drawImage(img, dx, dy, dwidth, dheight)
: Die Funktionsweise dieser Variante ähnelt der ersten. Jedoch wird im Gegensatz zu dieser das zu zeichnende Bild, sofern es nicht die angegebenen Ausmaßedwidth
unddheight
besitzt, mithilfe einer Vergrößerung oder Verkleinerung auf diese gebracht. -
drawImage(img, sx, sy, swidth, sheight, dx, dy, dwidth, dheight)
: Die Funktionsweise dieser Variante ähnelt der ersten. Einziger Unterschied ist, dass die Funktion nicht das ganze Bild zeichnet, sondern lediglich denjenigen Teil, der sich innerhalb des durch die Parameter 2 bis 5 aufgespannten Rechtecks befindet. Danach wird der Ausschnitt ebenso wie in Variante 2 auf die Maßedwidth
unddheight
gebracht, sofern er diese nicht sowieso schon hatte.
Beispiel
ansehen …
function zeichne() {
var element = document.getElementById('canvas');
if(element.getContext) {
var context = element.getContext('2d');
var img = document.getElementById('meinBild');
context.clearRect(0, 0, context.width, context.height);
context.drawImage(img, 10, 10);
context.drawImage(img, 300, 10, img.width/2, img.height/2);
context.drawImage(img, 0, 0, img.width/2, img.height/2, 270, 200, img.width/2, img.height/2);
}
}
Weblinks
- W3C: Drawing images
- WHATWG: canvas-Element
- WHATWG: Drawing images
Dabei wird, nachdem das Context-Objekt geholt und seine Oberfläche geleert wurde, mithilfe von
drawImage
das vorher mittelsgetElementById
geholteimg
-Element auf das Canvas-Element gezeichnet:img
-Elements, der sich im oberen linken Quadranten des Bildes befindet. Die letzten vier Variablen geben die Position (270 |200)und Größe (img.width/2, img.height/2) an. Da der Ausschnitt nur die halbe Breite und Höhe hat, werden diese Maße wieder halbiert.