HTML5 Canvasの状態を保存・復元する方法(save()とrestore()の使い方)
HTML5 Canvasには、描画の状態を保存・復元するための重要なメソッドとして save() と restore() の2つが用意されています。
save() メソッドを呼び出すたびに、その時点のキャンバスの状態(塗りつぶし色、透明度、変換行列など)がスタックに積まれます。そして restore() メソッドを呼び出すたびに、スタックの最後に保存された状態が取り出され、コンテキストがその状態へと戻ります。
save() と restore() の概要
| 番号 | メソッドと説明 |
|---|---|
| 1 | save() 現在の描画状態をスタックにプッシュします。 |
| 2 | restore() スタックの先頭にある状態をポップし、コンテキストをその状態に復元します。 |
サンプルコード
以下のコードを実行すると、HTML5 Canvasにおける状態の保存と復元の動作を確認できます。
<!DOCTYPE HTML>
<html>
<head>
<style>
#test {
width: 100px;
height:100px;
margin: 0px auto;
}
</style>
<script>
function drawShape(){
// DOMを使ってcanvas要素を取得
var canvas = document.getElementById('mycanvas');
// canvasがサポートされていない場合は実行しない
if (canvas.getContext){
// getContextで2D描画コンテキストを取得
var ctx = canvas.getContext('2d');
// デフォルト設定で矩形を描画
ctx.fillRect(0,0,150,150);
// デフォルトの状態を保存
ctx.save();
// 設定を変更して矩形を描画
ctx.fillStyle = '#66FFFF'
ctx.fillRect( 15,15,120,120);
// 現在の状態を保存
ctx.save();
// 新しい設定に変更して矩形を描画
ctx.fillStyle = '#993333'
ctx.globalAlpha = 0.5;
ctx.fillRect(30,30,90,90);
// 直前の状態を復元
ctx.restore();
// 復元した設定で矩形を描画
ctx.fillRect(45,45,60,60);
// 元の状態を復元
ctx.restore();
// 復元した設定で矩形を描画
ctx.fillRect(40,40,90,90);
} else {
alert('このデモを見るにはSafariまたはFirefox 1.5+が必要です。');
}
}
</script>
</head>
<body id = "test" onload = "drawShape();">
<canvas id = "mycanvas"></canvas>
</body>
</html>
コードの解説
このサンプルでは、次のような流れで状態の保存と復元を行っています。
- デフォルト設定(黒)で150×150の矩形を描画し、
ctx.save()でその状態を保存します。 fillStyleを水色(#66FFFF)に変更して矩形を描画し、再びctx.save()で状態を保存します。fillStyleを暗い赤(#993333)に、globalAlphaを0.5に変更して半透明の矩形を描画します。ctx.restore()を呼び出すと、直前に保存された水色の状態に戻るため、次に描画する矩形は水色になります。- もう一度
ctx.restore()を呼び出すと、最初に保存されたデフォルトの黒の状態に戻り、以降の描画は黒で行われます。
このように save() と restore() を組み合わせることで、一時的にスタイルや変換設定を変更しても、簡単に元の状態へ戻すことができます。複雑な図形やアニメーションを描く際に非常に便利な機能です。
-
Windowsでレジストリをバックアップ・復元する2つの簡単な方法
レジストリは、Windowsオペレーティングシステムに不可欠な要素です。Windowsの設定やプログラムに関する情報はすべて、この階層型データベース(レジストリ)に保存されています。各種設定、デバイスドライバーの情報など、システムの動作に重要なデータがすべてここに記録されており、いわば「あらゆるプログラムが記録を残す台帳」とも言えます。Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10といった過去のバージョンすべてに、このレジストリが搭載されています。 さまざまな設定変更はレジストリ経由で行われますが、その操
-
Windowsレジストリのバックアップと復元方法を徹底解説
Windowsレジストリに変更を加える予定があるなら、事前に適切なバックアップを作成しておくことが非常に重要です。レジストリはWindows PCの動作において中核的な役割を担っており、破損すると作業全体に深刻な支障をきたす可能性があります。 レジストリのバックアップは、こうしたトラブルに対する保険とも言える存在です。万一問題が発生しても、あらかじめバックアップがあれば、ファイルを復元することで安全に元の状態へ戻すことができます。 本記事では、Windowsレジストリのバックアップ作成方法と、その復元手順について詳しく解説します。それでは始めましょう。 Windowsレジストリのバックアップを