二維CANVAS基本語法(圖片Image)
一、繪製圖片image
步驟:
- 建立圖片物件var img = new Image();
- 寫入圖片原始檔 img.src=”路徑”;
- 放入圖片
- 引數:圖片源的切割起點 x1, y1
- 引數:圖片源的切割寬高 w1,h1
- 引數:繪製圖在畫布上起點的座標 x2, y2
- 引數:繪製圖的寬高w2,h2
img.onload = function(){ context.drawImage(img, x1, y1, w1, h1, x2, y2, w2, h2); }
三種情況(寫入不同引數)
- 原圖顯示
context.drawImage( img, x2, y2);
- 縮放顯示
context.drawImage(img, x2, y2, w2, h2);
- 剪下顯示(類似精靈圖)
context.drawImage(img, x1, y1, w1, h1, x2, y2, w2, h2);
擦除畫布某塊區域 context.clearRect(x, y, w, h);
二、案例:鍵盤控制小人上下左右
一個小BUG:因為畫板寬高不是小人的倍數,所以當小人在邊緣處行走會有不好的體驗。
核心動作為將精靈圖用繪圖畫到畫板上的相應位置
context.drawImage(img, 精靈圖座標xy, 精靈圖尺寸wh, 繪圖座標xy, 繪圖尺寸wh);
<body> //畫板
<canvas width="600" height="400" id="canvas" style="border: 2px solid skyblue;"></canvas></body>
<script>
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
var img = new Image(); //建立圖片物件
img.src = "./img/DMMban.png";
img.onload = function () {
var manWidth = img.width / 4; //小人寬高
var manHeight = img.height / 4;
var x = 0; // 初始座標值x, y
var y = 2*manHeight;
var speed = 15; // 步長
var step = 0; //行走步數初始值,每一步則圖片為第(step%4)張
var xindex = 0; //該步數下,圖片顯示為第yindex行下的第xindex個
var yindex = 2; //yindex=左1、右2、上3、下0,初始設為2
context.drawImage(img,0,yindex*manHeight, manWidth, manHeight, x, y, manWidth, manHeight);
window.onkeydown = function (event) { //監聽鍵盤
context.clearRect(0, 0, canvas.width, canvas.height); //擦畫板
// context.beginPath(); //畫image不用換紙
switch(event.keyCode){ //上下左右按鍵KeyCode
case 37:
x=x<0? 0 : x-speed; //判斷邊界
yindex = 1;
break;
case 38:
y=y<0?0 : y-speed; //判斷邊界
yindex = 3;
break;
case 39:
x=x>canvas.width-manWidth? (canvas.width-manWidth): x+speed; //判斷邊界
yindex = 2;
break;
case 40:
y=y>canvas.height-manHeight?(canvas.height-manHeight): y+speed; //判斷邊界
yindex = 0;
break;
}
walk(); //呼叫函式畫圖
}
function walk(){ //畫圖函式
step++; //增加步數
xindex = step%4; //
context.drawImage(img,xindex*manWidth, yindex*manHeight, manWidth, manHeight, x, y, manWidth, manHeight);
}
}
</script>
2018.1.15
相關文章
- canvas實現二維碼和圖片合成Canvas
- web前端之HTML5壓縮圖片compress image with canvasWeb前端HTMLCanvas
- php生成二維碼圖片PHP
- Dart語言詳解(二)——基本語法Dart
- SwiftUI Image 圖片處理SwiftUI
- ??圖片壓縮CanvasCanvas
- canvas 壓縮圖片Canvas
- Golang 圖片處理 — image 庫Golang
- [一、基本語法]1基本語法概述
- PL/SQL第二章--基本語法SQL
- 【Go語言繪圖】圖片新增文字(二)Go繪圖
- 基於canvas生成圖片Canvas
- canvas-修改圖片亮度Canvas
- canvas效能-drawImage渲染圖片Canvas
- canvas代替img渲染圖片Canvas
- Android 生成帶圖片的二維碼Android
- intervention/image 伺服器圖片裁剪伺服器
- CSS-背景圖片|background-imageCSS
- Laravel 使用 Intervention/image 處理圖片Laravel
- Image Optimizer for Mac(圖片壓縮工具)Mac
- Android 圖片操作,Image實戰Android
- vue el-image 顯示圖片Vue
- Canvas與Image互轉Canvas
- canvas實現圖片馬賽克Canvas
- canvas圖片跨域問題Canvas跨域
- HTML使用canvas載入圖片HTMLCanvas
- 設定二維碼圖片背景透明教程
- PHP 修改圖片顏色(生成彩色二維碼)PHP
- Nginx Image Module圖片縮圖 水印處理模組Nginx
- 002.00 圖片處理 PIL.Image
- 圖片大小調整工具:Image Resizer for MacMac
- HTML標記語法之圖片Img元素HTML
- Markdown 基本語法
- javascript基本語法JavaScript
- PHP基本語法PHP
- Redux基本語法Redux
- React基本語法React
- ajax 基本語法