1. 程式人生 > >【HTML】Canvas(3)-繪製圖片

【HTML】Canvas(3)-繪製圖片

開發遊戲的時候,遊戲中的地圖、背景、任務、物品等都是由圖片組成的,這次我們來談談在canvas中如何操作圖片吧。

       canvas中提供了drawImage函式putImageData函式來繪製圖片。

       drawImage()函式有3種函式原型,語法如下:

       drawImage(image,dx,dy);

       drawImage(image,dx,dy,dw,dh);

       drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

       引數一image是要繪製的物件,這個引數可以是HTMLImageELement、HTMLCanvasElement、HTMLVideoElement,

       dx,dy是image在canvas中定位的座標值,

       dw,dh表示image在canvas中即將繪製的區域(相對dx和dy座標的偏移量)的寬度和高度值,

       sx,sy是image所要繪製的起始位置,

       sw,sh是image所要繪製的區域(相對image的sx和sy座標的偏移量)的寬度和高度值

       先準備好HTML部分:

<body>
	img標籤<br/>
	<img src="../images/travel.jpg" id="travel" alt="travel" title="travel"/><br/>
	<br/><br/>
	canvas畫板<br/>
	<!-- PS:畫板要設定寬高值,且要不能小於原圖,否則圖片會顯示不完整 -->
    <canvas id="mycanvas" width="500" height="500">		
    	你的瀏覽器不支援HTML5
    </canvas>
</body>

Javascript部分:

       方法一:通過<img>標籤來獲取

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	//獲取圖片id,取得圖片資料
	var img=document.getElementById('travel');
	//用drawImage()函式將圖片繪製到畫板上
	ctx.drawImage(img,0,0);
方法二:通過javascript的Image物件來獲取


先建立一個Image物件,然後通過設定src屬性來載入圖片,接著新增onload事件偵聽,當圖片載入完成時將其繪製到畫板上。

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	var img=new Image();
	img.src='../images/travel.jpg';
	img.onload=function(){
		ctx.drawImage(img,0,0);
	};

我們來具體看下drawImage函式的3種函式原型的用法和區別:


var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');
	var image=new Image();
	image.src='../images/travel.jpg';
	image.onload=function(){
		//表示從座標(0,0)開始繪製整張圖片
		ctx.drawImage(image,0,0);

		//表示從座標(200,0)開始繪製整張圖片到長100,寬100的矩形區域內
		ctx.drawImage(image,200,0,100,100);

		//表示擷取圖片從(50,50)到(100,80)的部分,從座標(200,110)開始繪製放到長100,寬60的矩形區域內
		ctx.drawImage(image,50,50,100,80,200,110,100,60);
	};

還有一種繪製圖片的方法,就是利用getImageData和putImageData繪製圖片:

putImageData(imgdata,dx,dy,sx,sy,sw,sh)函式的7個引數中,imgdata是畫素資料,dx,dy是繪製圖片的定位座標值,sx,sy是imgdata所要繪製圖片的其實位置,sw,sh是imgdata所要繪製區域(相對imgdata的sx,sy座標的偏移量)的寬度和高度值。後4個引數可以省略,此時表示繪製整個imgdata

       在使用putImageData()前,需先用getImageData(x,y,w,h)函式得到畫素資料,即從canvas畫板上取得所選區域的畫素資料,它的4個引數分別是:選擇區域七點的座標x和座標y,選擇區域的長和寬。

       putImageData(imagedata,dx,dy,x,y,w,h)函式則表示將所得到的畫素資料描畫到canvas畫板上形成圖形。
var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	var image=new Image();
	image.src='../images/travel.jpg';
	image.onload=function(){
		ctx.drawImage(image,0,0);
		var imgData=ctx.getImageData(50,50,192,168);
		ctx.putImageData(imgData,200,260);
		ctx.putImageData(imgData,200,260,50,50,100,100);
	};
注:使用getImageData函式獲取圖片資料,此函式在chrome,Firefox,ie等瀏覽器中會涉及跨域問題,所以無法直接在瀏覽器中瀏覽,必須通過伺服器來訪問測試。

Author:致知

Sign:路漫漫其修遠兮,吾將上下而求索。

附:

相關推薦

HTMLCanvas(3)-繪製圖片

開發遊戲的時候,遊戲中的地圖、背景、任務、物品等都是由圖片組成的,這次我們來談談在canvas中如何操作圖片吧。        canvas中提供了drawImage函式和putImageData函式來繪製圖片。        drawImage()函式有3種函式原型,語法

HTML設定全屏圖片

【HTML】設定全屏圖片 CSS頁面程式碼: html,body{ width:100%; height:100% } body{ font-family: "華文細黑";

Python2.3繪製等邊三角形

#2.3等邊三角形.py import turtle turtle.setup(650,350,200,200) #擡起畫筆:turtle.penup() #移動到相應座標:turtle.goto(座標) #放下畫筆:turtle.pendown() #畫圓

筆記canvas圖片預加載及進度條的實現

函數 style uil 圖片加載 mage code 重繪 執行 ces /*star *loading模塊 *實現圖片的預加載,並顯示進度條 *參數:圖片數組對象,加載完成的回調函數 */ function loadImages(sources,c

HTML 向網頁<Title></Title>中插入圖片以及跑馬燈

doctype set utf css images style itl substring icon <!DOCTYPE html><html><head><meta charset="UTF-8"><style ty

html使用img標籤和背景圖片之間的區別

1.載入問題 背景圖片會等到html結構載入完成才開始載入 img標籤是網頁結構的一部分,會在html結構載入的時候載入 在網頁載入的過程中,背景圖片會等到結構載入完成(網頁的內容全部顯示以後)才開始載入,而img標籤 是網頁結構(內容)的一部分會在html結構載入的過程中載入,換句話講,網頁會先載入

html使用img標簽和背景圖片之間的區別

tle smi 圖像 dia upload 查詢 ref 屏幕 文本 1.加載問題 背景圖片會等到html結構加載完成才開始加載 img標簽是網頁結構的一部分,會在html結構加載的時候加載 在網頁加載的過程中,背景圖片會等到結構加載完成(網頁的內容全部顯示以後)才開始加載

ES學習3-請求體查詢

ext 組合 https 傳遞 guide should 學習 text class 1.空查詢 GET /index_2014*/type1,type2/_search {} GET /_search { "from": 30, "size": 10 }

html點擊鏈接讓頁面在 iframe 中變換

pan dex fff tar html order get eight 鏈接 Demo: <html><body> <a href= "1.html " target= "iFrameName "> page1 </a&

HTML---HTML語義化

blog 信息 w3c .cn 體驗 什麽是html 無語 caption -s 1、什麽是HTML語義化? <基本上都是圍繞著幾個主要的標簽,像標題(H1~H6)、列表(li)、強調(strong em)等等>   根據內容的結構化(內容語義化),選擇

c#winform 上傳圖片

geb mes tap pict efi for text 選擇 amp 1、拖拽上傳圖片 1.1、後臺代碼中修改窗體屬性,添加 AllowDrop = true 1.2、給窗體添加拖拽事件,在事件列表找到拖拽 雙擊即可: 在 DragDrop 生成的方法中添加代碼如

cocos2dx 3.x C++搭建protobuf環境

person ccf binding csdn bind taf protoc -cp strlen http://blog.csdn.net/ganpengjin1/article/details/50964961 Cocos2dx 裏面在網絡遊戲通信這一塊一般我們都會采

HTML瀏覽器內核控制meta name="renderer" 說明文檔

ica code 功能 head 建議 ans idt rda adc 背景介紹 由於眾所周知的情況,國內的主流瀏覽器都是雙核瀏覽器:基於Webkit內核用於常用網站的高速瀏覽。基於IE的內核用於兼容網銀、舊版網站。以360的幾款瀏覽器為例,我們優先通過Webkit

HTMLHttp分段下載詳解

多線程 ces 數值 alt locks www. 支持 read rand 一.為什麽需要Http分段下載 在實際的業務開發中,大文件使用Http普通下載非常容易OOM(內存溢出)或是鏈接超時的錯誤,這種情況下應該就應該考慮使用Http的分段下載了。下面筆者為你

htmlHTML的布局標簽

html常用的布局標簽div 通常代表"盒子",使用id或者class進行修飾 header 頁面或者區域的頭部 footer 頁面或者區域的底部 nav 導航條 section 文檔中的章節、版塊(類似div,但是主要針對文檔類區域) aside 側邊欄 artical 文章、文檔本文出自 “孔

html01_html的介紹

min 標記 gem 瀏覽器 -i bin 組織 難了 markup 【HTML專修介紹】 定義: HTML(HypertextMarkup Language),超文本標記語言 如何理解: (意思就是超越了文本,還能兼容圖片,視頻,聲音字節) 它的主要用處是什麽? 就是用來

html

size 無序 input -s table oot 名稱 無序列表 內容 標簽名稱 標簽定義 標簽類型 標簽特點 <DOCTYPE> 文檔類型  單標簽 <html> 雙標簽 <head>

HTML百度地圖webAPI使用

poi stat local mark mage 鼠標 eba color 發送 1、登錄百度地圖,創建WEB應用,設置白名單、獲取該WEB應用的ak 2、在頁面引入相應的js和ak 3、效果(CSS不提供): 4、實例化地圖map,並給map添加相應的搜索和確定坐標事

DFSCCF201512-3畫圖

iomanip 開始 mes shu const using 端點 top DC 問題描述   用 ASCII 字符來畫圖是一件有趣的事情,並形成了一門被稱為 ASCII Art 的藝術。例如,下圖是用 ASCII 字符畫出來的 CSPRO 字樣。  ..____.____

HTMLdiv居中顯示

block 偏移 ali parent idt content gin wid IT 方法1: .parent { width:800px; height:500px; border:2px solid #000