Я работаю над графическим интерфейсом для рисования карт метро. Линия представлена станцией в виде кружков и ломаной линии, чтобы связать их. Вы можете перемещать станции с помощью мыши, и, конечно, она обновляет отображаемую карту в режиме реального времени. Моя проблема в том, что когда станции приходят под определенным углом, возникает искажение ломаной линии, а угол, созданный двумя линиями, находится вне отображения круга станции, я хотел бы знать, есть ли способ избежать этого.
скриншоты приложения с проблемой ломаной линии
вот мой код для розыгрыша полилинии
//x and y point array creation
xPoints = new int[this.stationViews.size()];
yPoints = new int[this.stationViews.size()];
for (int i=0;i<this.stationViews.size();i++) {
//fill arrays with the center point of circles representing stations
xPoints[i] = this.stationViews.get(i).getStation().getPosX()-this.stationViews.size()/2;
yPoints[i] = this.stationViews.get(i).getStation().getPosY()-this.stationViews.size();
}
//setting color
g2D.setColor(this.line.getColor());
//set stroke width relative to the zoom level
int strokeWidth=5;
if(!this.stationViews.isEmpty()) {
if (this.stationViews.get(0).getStationSize()>14) {
strokeWidth = this.stationViews.get(0).getStationSize()-13;
}else {
strokeWidth = 3;
}
}
g2D.setStroke(new BasicStroke(strokeWidth));
//draw the polyline
if (this.stationViews.size() >1) {
g2D.drawPolyline(xPoints, yPoints, this.stationViews.size());
}
//draw the station (g2D.drawCircle)
for (StationView stationView : stationViews) {
stationView.affiche(g2D,this.line.getColor());
}
спасибо за вашу помощь