Canvas状态的保存与恢复

Canvas的API提供了save()restore()的方法,用于保存及恢复当前canvas绘图环境的所有属性。

save()与restore()方法可以嵌套调用

save()方法将当前绘图环境压入堆栈顶部,restore()方法从堆栈顶部弹出一组状态信息,并据此恢复当前绘图环境的各个状态。这意味着可以嵌套调用save()和restore()方法。

save()

将当前canvas的状态推送到一个保存canvas状态的堆栈顶部。canvas状态包括了当前的坐标变换(transformation)信息、裁剪区域以及所有canvas绘图环境对象的属性,包括strokeStyle、fillStyle与globalCompositeOperation等。

canvas状态并不包括当前的路径或位图。只能通过调用beginPath()来重置路径。至于位图,它是canvas本身的一个属性,并不属于绘图环境对象。

尽管位图是canvas对象本身的属性,但也可以通过绘图环境对象来访问(context.getImageData())

restore()

将canvas状态堆栈顶部的条目弹出。原来保存于栈顶部的那一组状态,在弹出之后,就被设置成canvas当前的状态了。因此,在调用save()于restore()方法之间,对canvas状态所进行的修改,其效果只会持续至restore()方法被调用之前。

原文地址:https://www.cnblogs.com/MyNodeJs/p/9649623.html

时间: 2024-11-05 13:34:08

Canvas状态的保存与恢复的相关文章

Android开发中Activity状态的保存与恢复

当置于后台的Activity因内存紧张被系统自动回收的时候,再次启动它的话他会重新调用onCretae()从而丢失了之前置于后台前的状态. 这时候就要重写Activity的两个方法来保存和恢复状态,具体用途举个例子:你正在编辑短信,这时候来了一个电话,打完电话回到短信界面, 短信刚好被系统回收重启,这时原先编辑了一半的内容总不能丢失了吧,这样影响用户体验.所以解决办法如下: 1 private static final String INSTANCE_STATUS="instance_statu

Activity 状态的保存和恢复

Activity状态保存的两种情况 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的时候,突然来了一个电话,这个时候在接听完电话之后我们返回到游戏中,这个时候我们希望游戏还是之前那个进度,或者说发生突发事件,游戏这个应用程序被关闭了,这个时候我们如果再重新打开游戏的话,我们如果还是希望回到之前的进度,我们就需要将其状态保存起来,这样在Activity被摧毁时,我们还能够根据保存的状态回到之前的进度.这就是Activity的状态保存. 二.Activ

Html5 Canvas笔记(3)-Canvas状态

p{ font-size: 15px; text-indent: 2em; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; padding: 5px; margin: 1em 0 1em 0; } .alexrootdiv>div>p:first-of-type,.alextitlep{ font-size: 18px; font-weight: bold; color: red;

Android——保存和恢复用户状态

onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chenshuai.excise; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View;

保存和恢复 Android Fragment 的状态

经过几年在 Android 应用开发中应用 Fragment 的努力之后,我必须要说尽管Fragment的概念非常优秀,但是它也同时带来了一堆问题.当我们处理实例的状态保存时就需要特别一件一件地修护好. 首先,尽管已经有了一个类似 Activity 中的 onSaveInstanceState 方法,但是它显然不能覆盖所有情况.换种说法就是,你不能仅仅依赖于 onSaveInstanceState 方法来保存/恢复视图的状态.这里有一些案例研究. 案例1:只有一个 Fragment 在栈中时,旋

保存和恢复activity的状态数据[转]

转自:here 一般来说,调用onPause()和onStop()方法后的activity实例仍然存在于内存中,activity中的所有信息和状态数据都不会消失,当activity重新回到前台后,所有的改变都会保留. 但是当内存系统内存不足时,调用onPause()和onStop()方法的activity可能被摧毁.此时内存中就不会存在有该activity实例对象了. 为了避免这种情况,我们可以覆盖onSaveInstanceState()方法来接受一个Bundle类型的参数,我们可以将该act

【转】android笔记--保存和恢复activity的状态数据

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留. 但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了. 如果之后这个activity重新回到前台, 之前所作的改变就会消失. 为了避免此种情况的发生, 开发者可以覆写onSaveIn

Android课程---Activity中保存和恢复用户状态

onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chenshuai.excise; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View;

【Android】11.2 通过重写对应的方法保存和恢复实例的状态

分类:C#.Android.VS2015: 创建日期:2016-02-21 一.简介 通过重写(也叫回调)对应的方法来管理Activity的生命周期,比如用户旋转屏幕时应用程序要能自动保存和恢复实例的状态,这对于开发一个健壮而又灵活的应用程序而言至关重要. 1.本节要点 一旦真正理解了Activity的生命周期,就可以轻松自如地通过C#代码去控制它了.这一节我们主要学习如何用Boundle存储简单类型的数据(比如int.double.string.bool.--等). 当一个Activity停止