首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android画布绘制的效率

android画布绘制的效率
EN

Stack Overflow用户
提问于 2010-10-16 23:57:50
回答 2查看 7.9K关注 0票数 10

我一直想知道canvas是否有一个限制边界。

我的意思是,如果我使用像drawline(), drawbitmap(), drawcircle(),这样的函数,安卓真的会在画布上画一些东西,浪费一些CPU周期吗?

因为在所有绘图功能之后,屏幕上实际打印的图片是由屏幕大小决定的。如果我画的东西超出了屏幕尺寸,它就不会显示出来。

我想通过调用很多绘图函数在画布上做一些小细节,让我的表面“闪闪发光”。如果它是越界的,我不想使用它们,如果它们使我的绘图速度变慢。

我正在做一个表面视图结构的小游戏,谢谢你的建议。

例如:

我有一个机器人从屏幕外的<-> b走过来。

在画布上绘制机器人行走的图片需要20个绘图函数。如果我滚动屏幕,我就能看到机器人了。

因此,如果屏幕外的绘图功能真的需要与屏幕上的绘图一样多的时间。我必须检测到,只有当用户可以看到机器人的位置时,我才会绘图。否则,我就不会了。

如果绘图函数不会浪费太多的CPU周期,那么即使当前屏幕看不到机器人,我也可以每次都绘图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-17 00:22:13

你的画布是由你的位图(2D)或openGL (3D,我没有经验)支持的。画布上的所有图画都被剪裁到剪裁矩形上,你可以放大、缩小、与新的矩形或路径相交等等。所以,你真的想在画布上绘制之前管理你的剪裁矩形,特别是如果它背后有一个大的位图。如果裁剪到与屏幕大小相等的区域,则可以节省CPU周期。如果您的游戏是滚动类型的游戏,您可以裁剪到比屏幕大小更大的区域,并在周围平移,偶尔在屏幕外绘制以更新屏幕上的区域。如果你的游戏在所有方向都有无限滚动,那么你会想要有多个较小的画布,你可以在主中央画布周围绘制,并根据滚动游戏的方向从左到右,从上到下翻转它们。对于小型设备来说,一个包含一个画布的大型位图可能会占用太大的内存。

票数 5
EN

Stack Overflow用户

发布于 2010-10-17 02:41:19

当画布覆盖整个屏幕时,另一件可以加快画布绘制速度的事情是使用没有背景的主题。默认主题至少有一个可绘制的彩色背景,当您将视图放在它上面时,这会导致绘制速度变慢,即使您的视图充满了整个屏幕。

使用主题,例如:

代码语言:javascript
运行
复制
    <style name="Theme.NoBackground" parent="android:Theme">
        <item name="android:windowBackground">@null</item>
    </style>
</resources>

Romain Guy在http://www.curious-creature.org/2009/03/04/speed-up-your-android-ui/上对这种现象有很好的描述

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3949606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档