HTML5のキャンバスを使って画像の描画(拡大/縮小)を行います。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> <title>画像の描画(拡大/縮小)</title> <script type="text/javascript"> /* ページロード完了 */ function OnLoad() { // 画像 var img01 = null; var img02 = null; // キャンバス取得 var canvas = document.getElementById("canvas"); // イメージ番号 var imgNum = 0; /* 画像の描画 */ function DrawImage( posX, posY ) { // 拡大率 var zoom = 1 + Math.random() * 2; /* 番号から画像上の位置を取得 */ var imgX = parseInt( imgNum % 10 ) * 16; var imgY = parseInt( imgNum / 10 ) * 16 + 16; var imgW = 16; var imgH = 16; var img = img01; // 0番の時はハムスターを描画 if (0 == imgNum) { imgX = 0; imgY = 0; imgW = img02.width; imgH = img02.height; img = img02; } // 画像の描画サイズと位置 var imgDrawW = imgW * zoom; var imgDrawH = imgH * zoom; var imgPosX = posX - imgDrawW / 2; var imgPosY = posY - imgDrawH / 2; // イメージの描画 ctx.drawImage( img , imgX // 画像上の描画開始位置X , imgY // 画像上の描画開始位置Y , imgW // 描画する画像の幅 , imgH // 描画する画像の高さ , imgPosX // 描画位置X , imgPosY // 描画位置Y , imgDrawW // 描画幅 , imgDrawH // 描画高さ ); } /* 初期化 */ function OnInit() { // マウスイベントを受け取る canvas.addEventListener( "mousedown" , function (e) { /* タップ位置の取得 FireFoxの場合は、offsetXとoffsetYがundefinedになる */ var posX = (e.offsetX !== undefined) ? e.offsetX : (e.layerX - e.target.offsetLeft); var posY = (e.offsetY !== undefined) ? e.offsetY : (e.layerY - e.target.offsetTop); // 画像の描画 DrawImage( posX, posY ); // 画像番号の更新 imgNum++; if (imgNum >= 30) { imgNum = 0; } }); } // コンテキストの取得 var ctx = canvas.getContext('2d'); // キャンバスのクリア ctx.fillStyle = 'white'; ctx.fillRect( 0, 0, canvas.width, canvas.height ); /* イメージの読み込み */ { // 1枚目の読み込み img01 = new Image(); img01.onload = function () { // 2枚目の読み込み img02 = new Image(); img02.onload = function () { // 初期化 OnInit(); }; img02.src = "./img/hidekiti.png"; }; img01.src = "./img/icon.png"; } } </script> </head> <body bgcolor="#c0c0ff" onload="OnLoad()"> <h1>画像の描画(拡大/縮小)</h1> <canvas width="300" height="240" id="canvas"></canvas> <br /> タップした位置の画像を色々な大きさで描画します。 <br /> <a href="../html5_list.html">戻る</a> </body> </html>