java 画布实验报告_java-绘制到画布

正如人们指出的那样,如果CalculateMyPixel()昂贵,拥有150,000(HVGA)或384,00倍(WVGA)的价格只会杀死您.

最重要的是,每次更新时尝试通过canvas.drawPoint()将UI绘制为单个像素,这大约是最无效的方法.

如果要绘制单个像素,则几乎可以肯定要使用某种包含像素的屏幕外位图,并使用简单的Canvas.drawBitmap()进行绘制.

然后,您可以决定管理该位图的最佳方法.最简单的方法是只制作所需大小的Bitmap对象,然后使用其中的API进行填充.

或者,有一个版本的drawBitmap()带有原始整数数组,因此您可以直接用所需的任何值填充该值,从而避免对每个像素进行方法调用.

现在,您可以将像素计算移出onDraw()方法,该方法需要快速以具有响应式UI,并将像素填充到其他位置.也许您在初始化时计算一次.也许您可以对它们进行计算,并在调用invalidate()之前仅对已更改的部分进行选择性更新(例如,(0,0)-(10,l0)中的像素已更改,因此请使用当前位图并仅修改该区域).如果计算像素实际上只是本质上很慢,则您可能需要创建一个单独的线程来完成此工作(用新像素更新位图,然后在UI上使用postInvalidate()绘制它们).

同样,由于现在像素已包含在位图中,因此您可以执行一些技巧,例如减小位图的大小并在绘制到屏幕时缩放位图,从而使您花费更少的时间更新这些像素,同时仍能填充整个UI(尽管以较低的分辨率).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值