【发布时间】:2016-11-07 17:21:49
【问题描述】:
这个例子画了一个简单的折线。
是否可以在这条折线周围用红色画出轮廓。 不是一个单一的大红色正方形,而是一个将原始折线的轮廓与所有区域相距 3-5 点。
尝试了一些计算并针对固定值工作,但当折线值是随机的时,该算法并不总是有效,因为线的下一部分可能会向右而不是向左或向上而不是向下。
您几乎必须向前看 2-3 点才能知道您是否要进行加法或减法。
有没有更简单的方法?
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PolyLine extends JPanel
{
public void paint(Graphics g) {
int[] xs = {25, 125, 85, 75, 25, 65, };
int[] ys = {50, 50, 100, 110, 150, 100};
BasicStroke traceStroke = new BasicStroke (1);
Graphics2D gc = (Graphics2D) g.create();
gc.setStroke(traceStroke);
gc.setColor(Color.BLUE);
gc.drawPolyline(xs, ys, 6);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new PolyLine());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,20, 1500,1500);
frame.setVisible(true);
}
}
【问题讨论】:
-
选项1:找到折线的几何中心并从那里移动所有点。这对于不规则或凹线不是很好。选项 2:将每条线段从其当前位置移开,使用线段相交公式确定需要延长/缩短多少。对于随机情况,您可能需要查看线的缠绕以确定移动线段的方式。
-
另外,显示尝试的“一些计算”。我在这里什么都没看到。
标签: java graphics2d polyline