canvas.save()和canvas.restore()作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了canvas.save()和canvas.restore()作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1449字,纯文字阅读大概需要3分钟。
内容图文
文章转自:oney139;
最终所有权归作者所有。
链接:http://blog.csdn.net/oney139/article/details/8143281。
canvas.save()和canvas.restore():是两个相互匹配出现的,作用是用来存储画布的状态和取出保存的状态的。这里稍微解释一下。
当我们对画布进行旋转,缩放,平移等操作的时候其实是对特定的元素进行操作,比如图片,一个矩形等。但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响
对于canvas.save();和canvas.restore();还有不少人不懂,我再补充点:
代码段1:
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.save();
canvas.scale(5f, 5f);
canvas.restore();
canvas.drawBitmap(bmp2, 0,0,paint);
sfh.unlockCanvasAndPost(canvas);
}
代码段2:
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.scale(5f, 5f);
canvas.drawBitmap(bmp2, 0,0,paint);
sfh.unlockCanvasAndPost(canvas);
}
上面这两个代码片段中我们都假设有两张图片bmp1和bmp2,并且都画在画布上!
那么代码是段1和代码段2的不同:
代码段1中我们进行画布缩放的之前保存了画布的状态,做了缩放操作之后又去出之前保存的状态。这样做是为了保证bmp2正常画出来不受到缩放的影响!
代码段2里,画了bmp1后就执行了缩放操作,并且没有保存状态!紧接着画了bmp2,那么bmp2也会一样受到缩放的影响!!
所以我们如果单独处理一张图片的时候,而且不想影响其他部分的绘制。那么应该如下来做:
view plaincopy toclipboardprint?
public void draw() {
Canvas canvas = sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp1, 0,0,paint);
canvas.save();
canvas.scale(5f, 5f);
canvas.drawBitmap(bmp2, 0,0,paint);
canvas.restore();
sfh.unlockCanvasAndPost(canvas);
}
原文:http://www.cnblogs.com/KeKeXu-home/p/7447003.html
内容总结
以上是互联网集市为您收集整理的canvas.save()和canvas.restore()作用全部内容,希望文章能够帮你解决canvas.save()和canvas.restore()作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。