java - Android drawLine起点随角度变化

标签 java android line android-canvas

我从一个固定点画一条线,然后绕着圆圈移动。根据线的角度(具体来说,角度在圆的四分之一内),线的起始 x 和 y 坐标会发生变化。看这个video明白我的意思。

我在线后放置了一个 2x2 像素的白色方 block ,以更好地显示起始 x 和 y 坐标的变化。该线应从正方形的右下角像素开始绘制。

这是我在 DrawFrame 方法中运行的代码:

radians = Math.toRadians(angle);
x2 = 15.0 * Math.cos(radians);
y2 = 15.0 * Math.sin(radians);
c.drawLine(80, 140, 80 + (float)x2, 140 + (float)y2, mPaint);
angle += 1;

c 是 Canvas ,mPaint 是一个新的 Paint() 对象。

我是 Android 的新手,所以我可能遗漏了一些东西。

最佳答案

从技术上讲,对于浮点精度,您的起点是白框的确切中心,即点 80、140 的左侧和顶部。

enter image description here

如果您的线条从像素的中间开始,您可能会对结果更满意——比如使用 80.49 和 140.49 作为您的中心。

enter image description here

无论哪种方式,您都只是在尝试用笨拙的像素画一条细线时遇到舍入问题。

关于java - Android drawLine起点随角度变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765553/

相关文章:

android - 广告未在 Release模式下显示

android - 为什么 React-Native 无法在与 Expo 的 Android 连接上启动项目?

java - 如何在Java中逐行传递args?

Java 用空白分隔符分割字符串

java - 为什么 Java 使用线程抽象而不是协程?

java - 共享两个组合框的数据源

java - 在 RxJava 中连接两个大型数据集

android - RuntimeException + ConnectException = Android 应用程序崩溃 (KSOAP2)

java - Java 8 中 reduce 的累加器是否允许修改其参数?

shell - 从 ansible 运行 sed 命令