- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
可以在此处找到示例 compass.java . Api here
最佳答案
即使几年前我第一次回答这个问题时,我也并不真正了解 Canvas
是如何转换的(如 translate
、rotate
等)工作。我曾经认为 translate
移动了您正在绘制的东西。实际上,translate
移动整个坐标系。这具有移动您正在绘制的东西的预期效果。
在您的屏幕上,您似乎正在移动绘图:
实际发生的事情是将坐标系移动到 Canvas 上的新位置:
我首先在 (0,0)
处绘制树。然后我将坐标系的原点转换到 Canvas 上的其他位置。然后我再次在 (0,0)
处绘制树。这样我的绘图代码根本不需要改变任何东西。只有坐标系发生变化。
通常 (0,0)
位于 View 的左上方。执行 Canvas.translate
会将其移动到 View 的其他部分。
您可以执行 save()
和 restore()
来回到原来的坐标系。
// draw the tree the first time
canvas.drawBitmap(tree, 0, 0, mPaint);
// draw the tree the second time
canvas.save();
canvas.translate(dx, dy); // dx = change in x, dy = change in y
canvas.drawBitmap(tree, 0, 0, mPaint); // draw still thinks it is at (0,0)
canvas.restore(); // undo the translate
当您restore
时,绘图已经在 Canvas 上。恢复不会改变这一点。它只是将坐标系移回您保存时的位置。
请注意,您可以通过更改 draw 方法的 x,y 坐标来实现相同的效果:
// draw the tree the first time
canvas.drawBitmap(tree, x, y, mPaint);
// update the x,y coordinates
x += dx;
y += dy;
// draw the tree the second time
canvas.drawBitmap(tree, x, y, mPaint);
如果有数学背景,这可能更直观。但是,当您平移、旋转和缩放图像时,通常很容易保持绘图逻辑相同并仅转换 Canvas 。为每次抽奖重新计算 x
和 y
可能会非常昂贵。
关于android - canvas.translate 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789813/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!