Html5 eğitimimize devam ediyoruz.Bu derste
save() ve
restore() methodlarını işleyeceğiz.Save ve restore kayıt et yükle işlemini yapıyor.Kayıt ettikleri şey ise canvasın o anki durumu.Şöyleki canvastaki komutların çoğu alt objeleri de etkiler bu etkilemeyi durdurmak için kullanılıyor genelde.
Sayfada birde çok save kullanılabilir.Örneğin ilk yazdığımız save farklı kayıt olur 2 yazdığımız save farklı.Restore ile çağırırken de sırayla bu saveleri alır.Yani ilk restore yazdığımız ilk saveyi alır.
İndir : http://ustaderslik.com/dosya/HTML5%20Canvas%20Ders-24%20save()%20ve%20restore()%20Kullanımı.zip
Kullanımı ise şu şekildedir :
cizim.save()
//işlemler
cizim.restore();
Bu şekilde işlemlerde yazılan komutlar restoredekinin altındakileri etkilemez.
Genel örnek :
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>UstaDerslik</title>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function(){
//canvas-1
var canvas = document.getElementById('canvas'),
cizim= canvas.getContext('2d');
cizim.beginPath();
cizim.rect(0,0,canvas.width,canvas.height);
cizim.fillStyle = '#dddddd';
cizim.fill();
cizim.rotate(5*Math.PI/180);
cizim.beginPath();
cizim.rect(0,0,canvas.width,canvas.height);
cizim.fillStyle = '#666666';
cizim.fill();
//canvas-2
var canvas = document.getElementById('canvas2'),
cizim= canvas.getContext('2d');
cizim.save();
cizim.beginPath();
cizim.rect(0,0,canvas.width,canvas.height);
cizim.fillStyle = '#dddddd';
cizim.fill();
cizim.rotate(5*Math.PI/180);
cizim.restore();
cizim.beginPath();
cizim.rect(0,0,canvas.width,canvas.height);
cizim.fillStyle = '#666666';
cizim.fill();
})
</script>
<style type="text/css">
canvas{border:1px solid #ddd;margin-left:100px;margin-top:50px;}
</style>
</head>
<body>
<canvas id="canvas" width="600" height="400"></canvas>
<canvas id="canvas2" width="600" height="400"></canvas>
</body>
</html>
Görüntüsü :
Yukarıda 2 canvas mevcut.İlkinde save ve restore kullanmadık o yüzden rotate komutu altakini etkiledi ama 2 canvasta save ve restore kullandığımız için etkilemedi.