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

问题描述 投票:0回答:1

我正在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. 计算斜边

此时,我正在努力弄清楚我需要如何使用自己拥有的价值观。比这简单吗?我在想,我需要将线从(x,0)和(0,Y)分开的点通过获取中点值得到。

java android drawing paint touch-event
1个回答
1
投票

[当您呼叫drawLine(float startX, float startY, float stopX, float stopY, Paint paint)并想要水平行时,drawLine(float startX, float startY, float stopX, float stopY, Paint paint)startY的值必须相同。

当您需要垂直行时,stopYstartX的值必须相同。

您的代码具有:

stopX

这不是试图绘制horizo​​ntal线或vertical线。

绘制2(!)线以将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); 连接到(startX, startY),第一行垂直和第二行水平]:]

(stopX, stopY)
© www.soinside.com 2019 - 2024. All rights reserved.