Html5 Canvas 中的save 和 restore
最近在學習html5的canvas,對其中的save 和 restore有一些疑惑
save是儲存一次狀態 這儲存所有的canvas 上下文屬性。例如style, lineWidth等
把這個狀態壓入一個堆疊
restore 恢復上一次save的狀態,從堆疊裡面推出一個狀態。
我弄了一個畫正方形的 效果 邊長隨著點選遞增
畫筆的顏色在2種顏色裡面迴圈交替
然後在每畫三次的時候,恢復上一次狀態
程式碼如下:
window.onload = function(){ var Draw = function() { this.canvas = document.getElementById('canvas'); this.storkeStyles = ['#09F','#3FE']; this.count = 1; }; Draw.prototype = { init:function(){ this.ctx = this.canvas.getContext('2d'); this.ctx.lineWidth = 2; this.draw(); }, draw:function(){ this.ctx.strokeRect(100 - 5*this.count,100 -5*this.count,10*this.count,10*this.count); this.ctx.save(); this.count++; this.ctx.strokeStyle = this.storkeStyles[this.count % 2] }, redraw:function(){ this.ctx.restore(); } }; var draw = new Draw(); draw.init(); document.getElementById('draw_button').onclick = function(){draw.draw();} document.getElementById('redraw_button').onclick = function(){draw.redraw();} }
頁面:
<div>
<canvas id='canvas' width='200' height='200'></canvas>
<input type='button' value='draw' id='draw_button'/>
<input type='button' value='redraw' id='redraw_button'/>
</div>
相關推薦
canvas中save()和restore()方法的使用
save()和restore()方法是繪製複雜圖形必不可少的方法.它們分別是用來儲存和恢復 canvas 狀態的,都沒有引數。Canvas 狀態是以堆(stack)的方式儲存的,每一次呼叫 save 方法,當前的狀態就會被推入堆中儲存起來。這種狀態包括:當前應用的變形(即移
關於Canvas的save和restore的那些事
本篇部落格主要是關於一個canvas在呼叫save和restore會產生什麼影響。android中的Canvas我們直接使用的場景並不是很多,在我的印象中,只有在自定義View,手動繪製bitmap和手動更新SurfaceView的時候會需要手動的在Canvas
Html5 Canvas 中的save 和 restore
最近在學習html5的canvas,對其中的save 和 restore有一些疑惑 save是儲存一次狀態 這儲存所有的canvas 上下文屬性。例如style, lineWidth等 把這個狀態壓入一個堆疊 restore 恢復上一次save的狀態,從堆疊裡面推出一個
HTML5 canvas save和restore方法講解
save()和restore()方法是繪製複雜圖形必不可少的方法.它們分別是用來儲存和恢復 canvas 狀態的,都沒有引數。Canvas 狀態是以堆(stack)的方式儲存的,每一次呼叫 save 方法,當前的狀態就會被推入堆中儲存起來。這種狀態包括:當前應用的變形(即移動,旋轉和縮放,見下): strok
html5 canvas中的屬性和方法詳解
建立一個Canvas畫布的方法如下 <canvas id=”canvas” width=”600” height=”400”></canvas> 可以在標籤中新增<canvas>標籤不可用時的替代文字,如下所示: <canv
canvas save和restore的作用
<canvas id="physic" width="1800" height="800" style="background: #fff;position: absolute;"></canvas> canvas是h5新增的功能,他
HTML5 | Canvas中變量作用域與setInterval()方法的影響
通過 value utf 出現 close span arc shadow cli Demo - 隨機繪制圓環 實現思路: 將一個圓環的繪制分成100份,setInterval()方法定義每隔時間n繪制一段新的,每份的開始路徑都是上一次的結束路徑,實現步進繪制。 通
HTML5 Canvas中繪製橢圓的幾種方法
1.canvas自帶的繪製橢圓的方法 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)是後來新增的, 引數的意思:(起點x.起點y,半徑x,半徑y,旋轉的角度,起始角,結果角,順時針還是逆時針)
Canvas 的save()與 restore()的詳細介紹
save()和restore()是用來儲存和恢復canvas狀態的,都沒有引數。 Canvas的狀態就是當前畫面應用的所有樣式和變形的一個快照。 Canvas狀態儲存在棧中,每當save()方法被呼叫後,當前的狀態就被推送到棧中儲存。一個繪畫狀態包括: 1、當前應用的變形(即移動,旋
自定義View畫布save()和restore()
遇到這兩個防法正好記錄一下,有一個簡單的例子,畫一個鐘錶的刻度盤,首先畫圓,然後通過旋轉畫布畫刻度,下面主要程式碼: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);
HTML5 Canvas中繪製線段
繪製線段呼叫lineTo()方法繪製線段。lineTo(x, y)方法把當前點和lineTo()方法指定的點(x, y)用線段連線起來。如果要繪製多條線段,可以重複呼叫該方法。第一次呼叫,當前點為子路徑的起點,以後每次呼叫,都會把上一次的終點作為本次的起點。我們使用lineT
HTML5 Canvas中繪製橢圓的5種方法
1.canvas自帶的繪製橢圓的方法 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)是現在
Redis中SAVE和BGSAVE的區別
color 安裝 spa ted 數據持久化 我們 sts local 間隔 Redis的這兩個命令都是用於創建當前數據庫的備份。 因為Redis持久化選擇RDB快照模式,所以Redis並不是實時的進行數據持久化,而是有一定的時間間隔。這個時候如果我們想要手動進行一次持久化
【坑】html5-canvas中使用clip摳出一個區域
本想在一個fillRect中摳出一個區域來給我用的,這個是在學clip方法的時候用到的 但是怎麼也弄不出扣的區域,程式碼如下 <!DOCTYPE html> <html> &
kvm save和restore
使用結論:可以在虛機開機狀態下(記憶體)儲存當前的虛機狀態為一個檔案 還原的時候虛機關機,然後restore回去,遇到個問題,儲存狀態後,虛機裡寫東西,然後虛機關機做restore,虛機就又問題了 所以不推薦使用save和restore到生產中 但是在測試
canvas.save()和canvas.restore()作用
這裡canvas.save();和canvas.restore();是兩個相互匹配出現的,作用是用來儲存畫布的狀態和取出儲存的狀態的。這裡稍微解釋一下, 當我們對畫布進行旋轉,縮放,平移等操作的時候其實我們是想對特定的元素進行操作,比如圖片,一個矩形等,但是當你用canva
HTML5中Canvas rect(), strokeRect() 和 fillRect() 的區別
他們都接受相同的引數,見頁面表格。唯一不同的實現方式與效果方面有差異。 其中fillRect()與strokeRect() 在呼叫後會立即在畫布上畫面效果,而rect()不會立即將圖形畫出,只有在呼叫了stroke()方法之後,才會實際作用於畫布。 fillRect
HTML5開發中js的創建和繼承
obj 查看 技術 表示 派生 primary indexof const 優點 JavaScript對每個創建的對象都會設置一個原型,指向它的原型對象。 當我們用obj.xxx訪問一個對象的屬性時,JavaScript引擎先在當前對象上查找該屬性,如果沒有找
HTML5中sessionStorage和localStorage兩種儲存方式的使用
<head> <meta charset="utf-8"> <title>HTML5 本地儲存</title> <script type="text/javascript"> function $(id){retur
Android中Paint和Canvas的簡單使用
在 Android 中,Canvas 相當於畫布,而 Paint 相當於畫筆;那麼這兩個配合使用就可以畫出來我們想要的形狀了。 首先我們新建一個類,名字叫 MyView,重寫 onDraw() 方法,程式碼如下: @SuppressLint("AppCompatCustomView") pu