java - 如何画一条只以 90 度角分开的线?

标签 java android drawing paint touch-event

我正在 Android Studio 中制作一个逻辑模拟器应用程序,我希望拉线是水平的,如果有角度,则为垂直线(没有对角线)。

目前,我的线绘制了从网格上的一个对象到下一个对象的最短路线。

public void drawWires(Canvas canvas, Paint paint){

    if (inputA != null){ drawWire(canvas, paint, inputA); }
    if (inputB != null){ drawWire(canvas, paint, inputB);}
}
public void drawWire(Canvas canvas, Paint paint, LogicNode input) {
    paint.setColor(Color.BLUE);
    paint.setStrokeWidth(5);
    canvas.drawLine( input.getX() +  input.getW() * 3/4,
            input.getY() + input.getH() * 1/ 2,
            this.getX() + this.getW() * 1/4,
            this.getY() + this.getH()* 1/2, paint);

}

how I want the line to look. 这就是绘图在应用程序上的样子:http://prntscr.com/q17rpg ... 到目前为止我为实现新接线所做的工作:

  1. 在 ACTION_DOWN 时获取 X 和 Y
  2. 在 ACTION_UP 上获取 X 和 Y
  3. 从两个 X 和两个 Y 计算中点
  4. 计算斜边

此时,我正在努力弄清楚我需要用我所拥有的值(value)观做什么。有比这个简单的吗?我在想我需要线分割 (X,0) 和 (0,Y) 的点,我应该从获取中点值中得到它。

最佳答案

当您调用drawLine(float startX, float startY, float stopX, float stopY, Paint paint)时,并且您想要一条水平线,则 startYstopY 的值必须相同。

当您想要垂直线时,startXstopX 的值必须相同。

您的代码有:

canvas.drawLine(input.getX() + input.getW() * 3/4,
                input.getY() + input.getH() * 1/2,
                this.getX() + this.getW() * 1/4,
                this.getY() + this.getH() * 1/2, paint);

这并不是试图绘制水平线或垂直线。

绘制 2(!) 条线将 (startX, startY) 连接到 (stopX, stopY),第一条线垂直,第二条线水平线:

// Draw vertical line (using same X value)
canvas.drawLine(startX, startY,
                startX, stopY, paint);

// Draw horizontal line (using same Y value)
canvas.drawLine(startX, stopY,
                stopX, stopY, paint);

关于java - 如何画一条只以 90 度角分开的线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014511/

相关文章:

java - 错误 403 禁止访问(权限不足)与 Google Cloud Storage JSON API Java 示例

java - ColdFusion 中 java.util.ArrayList 的用法

android - 读取外部存储时找不到文件异常

java - 绘图应用程序 - 将某些功能添加到 onCreateView 时出错

actionscript-3 - 使用 AS3 绘制部分圆时角度错误

java - 尝试更新 SharePoint 字段时出现 HTTP 错误 400 错误请求 - URL 无效

android - 处理 Widget ListView 中的项目点击 [Android]

android - 来电动态覆盖默认铃声

ios - 如何在core graphics ios中连续绘制曲线

java - 带有变音符号的响应文本的内容长度错误