android图像绘制(三)画布刷屏问题记录

在canvas中绘制动态图的时候,如果使用了一个固定的背景图片,只有一个小小的精灵在移动!

这样的情况下却不得不在没帧中重新绘制背景图片,使得效率降低!尝试过各种方法,最终还是失败了!

如果有人有好的方法,可以提供一下,谢谢!

以下是在探索过程的一些分享:

1、一篇关于图片重新绘制的文章,不过只能是适用于精灵在固定位置变化,背景是没有变化的!

如果使用在移动的精灵上,将会使得整个屏幕都布满了精灵的移动图片,bug。

地址:Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法

2、关于SuffaceView等一些知识,canvas = sfh.lockCanvas();与sfh.unlockCanvasAndPost(canvas);之间画布都是不断的往上绘制的,所以需要覆盖掉重新绘制才可以!

参考:SurfaceView,SurfaceHolder,SurfaceHolder.CallBack

3、尝试过试用图层的方法,不过canvas.saveLayer()方法也不知道什么意思!

4、透明绘制,也不知道如何!

本文章只是记录一下,并不是解决方法……

时间: 2024-07-28 20:11:15

android图像绘制(三)画布刷屏问题记录的相关文章

android图像绘制(三)画布刷屏问题记录_Android

在canvas中绘制动态图的时候,如果使用了一个固定的背景图片,只有一个小小的精灵在移动! 这样的情况下却不得不在没帧中重新绘制背景图片,使得效率降低!尝试过各种方法,最终还是失败了! 如果有人有好的方法,可以提供一下,谢谢! 以下是在探索过程的一些分享: 1.一篇关于图片重新绘制的文章,不过只能是适用于精灵在固定位置变化,背景是没有变化的! 如果使用在移动的精灵上,将会使得整个屏幕都布满了精灵的移动图片,bug. 地址:Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法 2.

android图像绘制(五)画布保存为指定格式/大小的图片_Android

将图片进行编辑(放缩,涂鸦等),最后保存成指定格式.大小的图片. 先贴代码: 复制代码 代码如下: Bitmap bmp = Bitmap.createBitmap(480, 800, Config.ARGB_8888); Canvas canvas = new Canvas(bmp); canvas.drawBitmap(this.bmp, matrix, paint); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); File fil

android图像绘制(二)画布上放大缩小问题_Android

android中图像在画布上放大缩小时,图像的边框大小没有改变! 原图如下: 放大后:原来图片的边框没有改变,位置依旧! 所以如果要放置图片的位置的话,就需要做相应的位置移动才可以! 采用如下代码(全屏放置图片): 复制代码 代码如下: Matrix matrix = new Matrix(); matrix.postScale(canvas.getWidth()*1.01f/bmpBg.getWidth(), canvas.getHeight()*1.01f/bmpBg.getHeight()

android图像绘制(五)画布保存为指定格式/大小的图片

将图片进行编辑(放缩,涂鸦等),最后保存成指定格式.大小的图片. 先贴代码: 复制代码 代码如下: Bitmap bmp = Bitmap.createBitmap(480, 800, Config.ARGB_8888); Canvas canvas = new Canvas(bmp); canvas.drawBitmap(this.bmp, matrix, paint); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); File fil

android图像绘制(二)画布上放大缩小问题

android中图像在画布上放大缩小时,图像的边框大小没有改变! 原图如下: 放大后:原来图片的边框没有改变,位置依旧! 所以如果要放置图片的位置的话,就需要做相应的位置移动才可以! 采用如下代码(全屏放置图片):复制代码 代码如下: Matrix matrix = new Matrix(); matrix.postScale(canvas.getWidth()*1.01f/bmpBg.getWidth(), canvas.getHeight()*1.01f/bmpBg.getHeight(),

android图像绘制(七)ClipRect局部绘图/切割原图绘制总结_Android

杂语:看了很多程序猿都有写博客的习惯,看来我也得练练,不管写的好不好了,学到点什么体会就写写吧. 内容解说:这几天开始学游戏地图制作,今天小小的总结一下Canvas的clipRect()接口的使用. 1)选取要在画布上绘制(刷新)的区域,如图以(x, y)为起点坐标.宽w.高h的区域 2)选择要绘制的图片,不一定是刚好宽高为(w,h),大图就需要切割了(本例子绘制绿色区域) 3)将图片绘制到画布上,使得绿色区域与白色方块重合 4)最后效果图 代码解说: 复制代码 代码如下: canvas.sav

android图像绘制(七)ClipRect局部绘图/切割原图绘制总结

杂语:看了很多程序猿都有写博客的习惯,看来我也得练练,不管写的好不好了,学到点什么体会就写写吧. 内容解说:这几天开始学游戏地图制作,今天小小的总结一下Canvas的clipRect()接口的使用. 1)选取要在画布上绘制(刷新)的区域,如图以(x, y)为起点坐标.宽w.高h的区域 2)选择要绘制的图片,不一定是刚好宽高为(w,h),大图就需要切割了(本例子绘制绿色区域) 3)将图片绘制到画布上,使得绿色区域与白色方块重合 4)最后效果图 代码解说:复制代码 代码如下:canvas.save(

android图像绘制(一)多种方法做图像镜像_Android

在android中做图像镜像有很多方法,今天算是学习了! 两种方法如下: 复制代码 代码如下: //方法一 Matrix matrix = new Matrix(); matrix.postScale(leftOrRight, 1, bmpW/2, bmpH/2);//前两个是xy变换,后两个是对称轴中心点 matrix.postTranslate(x, y); canvas.drawBitmap(bmpLuffy[0], matrix, paint); //方法二 // canvas.save

android图像绘制(四)自定义一个SurfaceView控件

自定义控件(类似按钮等)的使用,自定义一个SurfaceView. 如某一块的动态图(自定义相应),或者类似UC浏览器下面的工具栏. 如下图示例:   自定义类代码: 复制代码 代码如下: public class ImageSurfaceView extends SurfaceView implements Callback{ //用于控制SurfaceView private SurfaceHolder sfh; private Handler handler = new Handler()