如何保留上一次绘制的图形不被刷新掉? 如何保留上一次绘制的图形不被刷新掉?比如我要做一个随着时间的推移画出一个曲线的图形,这个曲线是由无数的短直线连成,这样就要求画下个直线时保留上一次画的直线,如何做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是canvas上画吗?直接继续画,它之前的不会没掉啊如果你是重画的话,就需要把之前的图形也画一遍就像写游戏的时候,刷帧线程是每次都把整个图形画一遍的。 是在canvas上画啊,比如我每50毫秒画条短线,上一次画的线一刷新就没了,如果不刷新能显示得出来吗?我是android菜鸟,这个弄不明白啊我想做的效果是那个曲线随着时间的推移渐渐画出完整的部分,不需要一次性的画出。 我晕,android的绘图功能只能这样吗,我这个曲线是由上百条短直线组成,每次画当前直线时都要同时画前前面所画过的直线,当有上百条直线画的时候,那程序都没法写了啊? 只要你的数据在,就没问题。打个比方,你在时刻为0:00时,记录了有3个点ABC,此时连线为A->B->C,当时刻为1:00时,记录了4个点ABCD,那此时你只需根据你的点信息,在onDraw里面绘制出来就行。你应该以数据驱动UI的绘制,而不是造Canvas来保存上次的绘制。 我是用SurfaceView来绘制的,这位大大的方法是用什么画啊?我到现在为止学android不过两个星期的时间,还请大大说明白点啊!!! 我没用过SurfaceView,不过应该是没区别,无非就是画线而已。 当然你也可以通过holder.lockCanvas(dirty);来设定画布Canvas大小,这样子就不需要再画以前的数据了,但是这样子需要计算画布范围 如果对象太多 则代码更复杂 不仅不容易维护 对性能提升感觉也不算太大 还容易引发其它问题 所以推荐给你的做法是 你把你要画的对象列举出来(比如放到集合中) 然后每次刷新界面就画列举出来(集合中)的对象 这样子增删都很简单 一个优秀的程序员会选择这样做 SurfaceView你只管往上画,每50毫秒画点东西上去,不要去刷新 这个怎么理解啊。比如我的代码大致是这样的:public class rungame extends Thread{ ............................ ............................ @Override public void run() { ............................ while (true) { canvas = holder.lockCanvas(); Paint p = new Paint(); p.setColor(Color.RED); c.drawLine(startX, startX, stopX, stopY, p); holder.unlockCanvasAndPost(canvas); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } ...................... startX = XXXX; startY = xxxxx; stopX = xxxxx; stopY = xxxxx; ....................... } }}如果只管往上画,不去刷新,这个要怎么写。是不用unlockCanvasAndPost(canvas); 这种形式么?求说明白啊 postInvalidate(); 刷新 android 如何监听系统日期的变化 关于浏览器加载悬浮框中的URL的处理 谷歌地图被打了马赛克,这是怎么回事? 怎么样在PopupWindow里显示另外一个PopupWindow 弱弱的问下,如果要学习 Android 软件开发,需要做哪些准备工作? Android/IOS移动互联网推送数据问题! android 获取位置为null(附源代码) 安卓集成开发环境adt错误提示,新手勿怪 ActionBar返回键图标怎么搞小点? openfire添加好友一次验证通过 摄像头 效果调试 Android文字方向设置
如果你是重画的话,就需要把之前的图形也画一遍
就像写游戏的时候,刷帧线程是每次都把整个图形画一遍的。
我想做的效果是那个曲线随着时间的推移渐渐画出完整的部分,不需要一次性的画出。
比如我的代码大致是这样的:public class rungame extends Thread
{
............................
............................
@Override
public void run()
{
............................
while (true)
{ canvas = holder.lockCanvas();
Paint p = new Paint();
p.setColor(Color.RED);
c.drawLine(startX, startX, stopX, stopY, p);
holder.unlockCanvasAndPost(canvas);
try
{
Thread.sleep(50);
} catch (InterruptedException e)
{
e.printStackTrace();
}
......................
startX = XXXX;
startY = xxxxx;
stopX = xxxxx;
stopY = xxxxx;
.......................
}
}
}如果只管往上画,不去刷新,这个要怎么写。是不用unlockCanvasAndPost(canvas); 这种形式么?求说明白啊
刷新