【发布时间】:2019-12-26 03:56:09
【问题描述】:
嗨
我有 2 个点 (X1,Y1) 和 (X2,Y2) 我如何在它们之间画一条线?
谢谢
【问题讨论】:
-
你使用什么 gui 库(swing/swt/..)?
嗨
我有 2 个点 (X1,Y1) 和 (X2,Y2) 我如何在它们之间画一条线?
谢谢
【问题讨论】:
在摇摆中:
Graphics g;
g.drawLine(X1, Y1, X2, Y2);
如果您在JPanel 上绘图,您通常会将这段代码放在paintComponent 方法中:
@Override
protected void paintComponent(Graphics g) {
g.drawLine(X1, Y1, X2, Y2);
}
要查看Graphics 类的所有可用方法,请参阅Javadocs。
【讨论】:
JPanel内部的私有实例化,你可以覆盖paintComponent来控制Graphics。
看看Graphics.drawLine 方法。
您基本上需要覆盖一些小部件(如 JPanel)或获取 Canvas,然后在绘制方法中执行以下操作:
graphics.drawLine( p1.x, p1.y, p2.x, p2.y );
【讨论】:
对于 JFrame,您将在继承 JFrame 类的类内部添加一个绘制方法,该方法在 JVM 准备好在 JFrame 上绘图时运行。然后,在其中,您将调用图形的“drawLine”方法,如图所示(确保已导入“图形”类并用您选择的整数替换 X1、Y1、X2、Y2。):
public void paint(Graphics g) {
g.drawLine(X1,X2,Y1,Y2);
}
【讨论】:
paintComponent(Graphics)而不是paint(Graphics)
你也可以试试这个:
var draw = function(ctx,x1,y1,x2,y2) {
ctx.strokeStyle = "Black";
ctx.lineWidth = 4;
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.stroke();
};
var drawPoints = function(ctx,points) {
ctx.strokeStyle = "Black";
ctx.lineWidth = 4;
for(var i = 0; i<points.length -1;i++){
draw(ctx,points[i][0],points [i][1],points[i+1][0],points[i+1][1]);
}
};
var ctx = canvas.getContext("2d")
现在调用函数为:
drawPoints(ctx, points);
您可以将var points array 更改为您喜欢的任何点。
var points = [[50,50],[50,100],[100,100],[100,50]];
这应该用一条黑线连接所有点。如果你输入三个点,它会形成一个三角形,四个点,一个正方形等等。如果我弄错了,请告诉我。
【讨论】: