您好我有一个应用程序,您单击一个点,然后anotherand它绘制一个行程为20的行。我希望能够单击该行的任何部分并将其删除。
private Shape line = new Line2D.Double(x, y, fx, fy);
public highlight(int x, int y, int fx, int fy, int page, boolean fin) {
this.x = x;
this.y = y;
this.fx = fx;
this.fy = fy;
line = new Line2D.Double(x, y, fx, fy);
this.fin = fin;
this.page = page;
}
public void tick() {
line = new Line2D.Double(x, y, fx, fy);
if (!fin) {
play.cannotdrawline = true;
fx = Comp.mx;
fy = Comp.my;
} else {
play.cannotdrawline = false;
}
if(line.intersects(Comp.mx,Comp.my,1,1) && play.candeleteline){
if(Comp.ml){
remove = true;
}
}
}
public void render(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(20, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
// g.setColor(new Color(190,240,93, 143));
if (line.intersects(Comp.mx, Comp.my,1,1) && play.candeleteline) {
g.setColor(Color.blue);
} else {
g.setColor(Color.red);
}
g.drawLine(x, y, fx, fy);
//g2d.draw(line);
}
}
这一切都很好,我可以删除它,但我必须点击一个像素的中间一行才能删除它。我知道如何设置绘制线条的笔划,但我不知道如何设置线条形状的笔划(这是检查是否可以删除线条的部分)。我怎么能这样做?
提前致谢。
答案 0 :(得分:0)
我知道如何设置绘制线条的笔划,但我不知道如何设置线条形状的笔划(这是检查是否可以删除线条的部分)。我怎么能这样做?
据我所知,你不能因为,类似于Color,Stroke是Graphics2D对象的属性而不是Shape的属性。但是,您可以使用Map将某个Stroke与某个Shape相关联,或者根据需要使用自定义类,例如,如果您需要将多个属性(如Stroke和Color)与Shape相关联,就像可以创建任何其他Java关联一样。