java - 你如何画一条只以 90 度角分开的线?
问题描述
我正在 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);
}
我希望这条线看起来如何。 这是绘图在应用程序上的外观:http: //prntscr.com/q17rpg ...到目前为止我为实现新接线所做的工作:
- 在 ACTION_DOWN 上获取 X 和 Y
- 获取 ACTION_UP 上的 X 和 Y
- 从两个 X 和两个 Y 计算中点
- 计算斜边
在这一点上,我正在努力弄清楚我需要如何处理我拥有的价值观。比这更简单吗?我在想我需要线分割点 (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);
推荐阅读
- c# - Inno Setup 不会(总是)编译我的程序的最新版本
- php - 我的简码内容出现在网页顶部
- java - Spring JDBC 出站网关返回原始有效负载
- jmeter - 带有用户定义变量的 Jmeter $__Random()
- uwp - 从 Uwp 中的代码创建故事板
- python - 在 Tensorflow 1.X 中,无法使用 tf.data 训练 Keras?
- authorize.net - 接受托管定期计费
- octobercms - october cms 将另一个页面链接到一个页面中
- ios - 'ConversationDataSource' 类型的值没有成员'message At' - Swift 错误
- reactjs - React:如何在保存时取消选中所有复选框