如何绘制仅以90度角分开的线?

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

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

public void drawWires(Canvas canvas,Paint paint){

    if (inputA != null){ drawWire(canvas,paint,inputA); }
    if (inputB != null){ drawWire(canvas,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. 从Xs和Ys都计算中点
  4. 计算斜边

在这一点上,我正在努力弄清楚我需要对所拥有的价值做些什么。比这简单吗?我当时在想我需要将线从(x,0)和(0,Y)分开的点,该点应该从中点值中获取。

ilovec_ola 回答:如何绘制仅以90度角分开的线?

当您致电drawLine(float startX,float startY,float stopX,float stopY,Paint paint)并想要 horizo​​ntal 行时,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,stopX,paint);
本文链接:https://www.f2er.com/3043173.html

大家都在问