import org.meteoinfo.global.Extent; //导入方法依赖的package包/类
@Override
public void resizeUpdate() {
if (_graphic.getShape() != null) {
switch (_graphic.getShape().getShapeType()) {
case Point:
if (_graphic.getLegend().getBreakType() == BreakTypes.PointBreak) {
PointBreak aPB = (PointBreak) _graphic.getLegend();
aPB.setSize(this.getWidth());
updateControlSize();
}
break;
case Polyline:
case Polygon:
case CurveLine:
case CurvePolygon:
moveUpdate();
List points = (List) _graphic.getShape().getPoints();
Extent aExtent = _graphic.getShape().getExtent();
int deltaX = this.getWidth() - (int) aExtent.getWidth();
int deltaY = this.getHeight() - (int) aExtent.getHeight();
for (int i = 0; i < points.size(); i++) {
PointD aP = points.get(i);
aP.X = aP.X + deltaX * (aP.X - aExtent.minX) / aExtent.getWidth();
aP.Y = aP.Y + deltaY * (aP.Y - aExtent.minY) / aExtent.getHeight();
}
_graphic.getShape().setPoints(points);
break;
case Rectangle:
case Ellipse:
points = new ArrayList<>();
points.add(new PointD(this.getLeft(), this.getTop()));
points.add(new PointD(this.getLeft(), this.getBottom()));
points.add(new PointD(this.getRight(), this.getBottom()));
points.add(new PointD(this.getRight(), this.getTop()));
if (_graphic.getShape().getShapeType() == ShapeTypes.Rectangle) {
points.add((PointD) points.get(0).clone());
}
_graphic.getShape().setPoints(points);
break;
case Circle:
points = new ArrayList<>();
points.add(new PointD(this.getLeft(), this.getTop() + this.getWidth() / 2));
points.add(new PointD(this.getLeft() + this.getWidth() / 2, this.getTop()));
points.add(new PointD(this.getLeft() + this.getWidth(), this.getTop() + this.getWidth() / 2));
points.add(new PointD(this.getLeft() + this.getWidth() / 2, this.getTop() + this.getWidth()));
_graphic.getShape().setPoints(points);
break;
}
}
}