我正在 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 ... 到目前为止我为实现新接线所做的工作:
- 在 ACTION_DOWN 时获取 X 和 Y
- 在 ACTION_UP 上获取 X 和 Y
- 从两个 X 和两个 Y 计算中点
- 计算斜边
此时,我正在努力弄清楚我需要用我所拥有的值(value)观做什么。有比这个简单的吗?我在想我需要线分割 (X,0) 和 (0,Y) 的点,我应该从获取中点值中得到它。
最佳答案
当您调用drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
时,并且您想要一条水平线,则 startY
和 stopY
的值必须相同。
当您想要垂直线时,startX
和 stopX
的值必须相同。
您的代码有:
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/