下面列出了javafx.scene.shape.Arc#setRadiusY ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private Shape getSelfEdgeShape(Edge pEdge)
{
Line line = getSelfEdgeConnectionPoints(pEdge);
Arc arc = new Arc();
arc.setRadiusX(SELF_EDGE_OFFSET*2);
arc.setRadiusY(SELF_EDGE_OFFSET*2);
arc.setLength(DEGREES_270);
arc.setType(ArcType.OPEN);
if( getPosition(pEdge) == 1 )
{
arc.setCenterX(line.getX1());
arc.setCenterY(line.getY1()-SELF_EDGE_OFFSET);
arc.setStartAngle(DEGREES_270);
}
else
{
arc.setCenterX(line.getX1()-SELF_EDGE_OFFSET);
arc.setCenterY(line.getY1()-SELF_EDGE_OFFSET*2);
arc.setStartAngle(1);
}
return arc;
}
@Override
public boolean contains(Edge pEdge, Point pPoint)
{
boolean result = super.contains(pEdge, pPoint);
if (getShape(pEdge) instanceof Arc)
{
Arc arc = (Arc) getShape(pEdge);
arc.setRadiusX(arc.getRadiusX() + 2 * MAX_DISTANCE);
arc.setRadiusY(arc.getRadiusY() + 2 * MAX_DISTANCE);
result = arc.contains(pPoint.getX(), pPoint.getY());
}
return result;
}
/**
* The constructor by default.
* @param border The selection border.
*/
public RotationHandler(final @NotNull Rectangle border) {
super();
final Arc arc = new Arc();
arc.setCenterX(DEFAULT_SIZE / 2d);
arc.setRadiusX(DEFAULT_SIZE / 2d);
arc.setRadiusY(DEFAULT_SIZE / 2d);
arc.setType(ArcType.OPEN);
arc.setLength(270d);
arc.setStroke(DEFAULT_COLOR);
arc.setStrokeWidth(2.5d);
arc.setStrokeLineCap(StrokeLineCap.BUTT);
arc.setFill(new Color(1d, 1d, 1d, 0d));
getChildren().add(arc);
final Path arrows = new Path();
arrows.setStroke(null);
arrows.setFill(new Color(0d, 0d, 0d, 0.4));
arrows.getElements().add(new MoveTo(DEFAULT_SIZE + DEFAULT_SIZE / 4d, 0d));
arrows.getElements().add(new LineTo(DEFAULT_SIZE, DEFAULT_SIZE / 2d));
arrows.getElements().add(new LineTo(DEFAULT_SIZE - DEFAULT_SIZE / 4d, 0d));
arrows.getElements().add(new ClosePath());
getChildren().add(arrows);
translateXProperty().bind(Bindings.createDoubleBinding(() -> border.getLayoutX() + border.getWidth(), border.xProperty(),
border.widthProperty(), border.layoutXProperty()));
translateYProperty().bind(Bindings.createDoubleBinding(() -> border.getLayoutY() + DEFAULT_SIZE, border.yProperty(),
border.heightProperty(), border.layoutYProperty()));
}
private void drawTimeSections() {
if (sectionMap.isEmpty()) return;
ZonedDateTime time = tile.getTime();
DayOfWeek day = time.getDayOfWeek();
boolean isAM = time.get(ChronoField.AMPM_OF_DAY) == 0;
double offset = 90;
double angleStep = 360.0 / 60.0;
boolean highlightSections = tile.isHighlightSections();
for (TimeSection section : sectionMap.keySet()) {
LocalTime start = section.getStart();
LocalTime stop = section.getStop();
boolean isStartAM = start.get(ChronoField.AMPM_OF_DAY) == 0;
boolean isStopAM = stop.get(ChronoField.AMPM_OF_DAY) == 0;
boolean draw = isAM ? (isStartAM || isStopAM) : (!isStartAM || !isStopAM);
if (!section.getDays().contains(day)) { draw = false; }
if (!section.isActive()) { draw = false; }
if (draw) {
double sectionStartAngle = (start.getHour() % 12 * 5.0 + start.getMinute() / 12.0 + start.getSecond() / 300.0) * angleStep + 180;
double sectionAngleExtend = ((stop.getHour() - start.getHour()) % 12 * 5.0 + (stop.getMinute() - start.getMinute()) / 12.0 + (stop.getSecond() - start.getSecond()) / 300.0) * angleStep;
if (start.getHour() > stop.getHour()) { sectionAngleExtend = (360.0 - Math.abs(sectionAngleExtend)); }
Arc arc = sectionMap.get(section);
arc.setCenterX(clockSize * 0.5);
arc.setCenterY(clockSize * 0.5);
arc.setRadiusX(clockSize * 0.45);
arc.setRadiusY(clockSize * 0.45);
arc.setStartAngle(-(offset + sectionStartAngle));
arc.setLength(-sectionAngleExtend);
arc.setType(ArcType.OPEN);
arc.setStrokeWidth(clockSize * 0.04);
arc.setStrokeLineCap(StrokeLineCap.BUTT);
arc.setFill(null);
if (highlightSections) {
arc.setStroke(section.contains(time.toLocalTime()) ? section.getHighlightColor() : section.getColor());
} else {
arc.setStroke(section.getColor());
}
}
}
}
private void drawTimeSections() {
if (sectionMap.isEmpty()) return;
ZonedDateTime time = tile.getTime();
DayOfWeek day = time.getDayOfWeek();
boolean isAM = time.get(ChronoField.AMPM_OF_DAY) == 0;
double offset = 90;
double angleStep = 360.0 / 60.0;
boolean highlightSections = tile.isHighlightSections();
for (TimeSection section : sectionMap.keySet()) {
LocalTime start = section.getStart();
LocalTime stop = section.getStop();
boolean isStartAM = start.get(ChronoField.AMPM_OF_DAY) == 0;
boolean isStopAM = stop.get(ChronoField.AMPM_OF_DAY) == 0;
boolean draw = isAM ? (isStartAM || isStopAM) : (!isStartAM || !isStopAM);
if (!section.getDays().contains(day)) { draw = false; }
if (!section.isActive()) { draw = false; }
if (draw) {
double sectionStartAngle = (start.getHour() % 12 * 5.0 + start.getMinute() / 12.0 + start.getSecond() / 300.0) * angleStep + 180;
double sectionAngleExtend = ((stop.getHour() - start.getHour()) % 12 * 5.0 + (stop.getMinute() - start.getMinute()) / 12.0 + (stop.getSecond() - start.getSecond()) / 300.0) * angleStep;
if (start.getHour() > stop.getHour()) { sectionAngleExtend = (360.0 - Math.abs(sectionAngleExtend)); }
Arc arc = sectionMap.get(section);
arc.setCenterX(clockSize * 0.5);
arc.setCenterY(clockSize * 0.5);
arc.setRadiusX(clockSize * 0.45);
arc.setRadiusY(clockSize * 0.45);
arc.setStartAngle(-(offset + sectionStartAngle));
arc.setLength(-sectionAngleExtend);
arc.setType(ArcType.OPEN);
arc.setStrokeWidth(clockSize * 0.04);
arc.setStrokeLineCap(StrokeLineCap.BUTT);
arc.setFill(null);
if (highlightSections) {
arc.setStroke(section.contains(time.toLocalTime()) ? section.getHighlightColor() : section.getColor());
} else {
arc.setStroke(section.getColor());
}
}
}
}
public LoadingArc() {
Arc arc = new Arc();
arc.setCenterX(25);
arc.setCenterY(25);
arc.setRadiusX(25.0f);
arc.setRadiusY(25.0f);
arc.setLength(30.0f);
arc.setStrokeWidth(5);
Stop[] stops = new Stop[] { new Stop(0, Color.WHITE), new Stop(1, Color.BLUE)};
LinearGradient lg1 = new LinearGradient(0, 0, 1, 0, true, CycleMethod.NO_CYCLE, stops);
arc.setStroke(lg1);
Rectangle rect = new Rectangle(50, 50);
rect.setFill(null);
rect.setStroke(Color.RED);
getChildren().addAll(rect, arc);
double time = 0.75;
Rotate r = new Rotate(0, 25, 25);
arc.getTransforms().add(r);
//arc.getTransforms().add(new Scale(-1, 1, 25, 25));
Timeline timeline = new Timeline();
KeyFrame kf2 = new KeyFrame(Duration.seconds(time), new KeyValue(r.angleProperty(), 270));
timeline.getKeyFrames().addAll(kf2);
Timeline timeline3 = new Timeline(new KeyFrame(Duration.seconds(time), new KeyValue(r.angleProperty(), 360)));
SequentialTransition st = new SequentialTransition(timeline, timeline3);
st.setCycleCount(Timeline.INDEFINITE);
st.setInterpolator(Interpolator.EASE_BOTH);
st.play();
//////////
Timeline timeline2 = new Timeline();
timeline2.setAutoReverse(true);
timeline2.setCycleCount(Timeline.INDEFINITE);
KeyFrame kf = new KeyFrame(Duration.seconds(time), new KeyValue(arc.lengthProperty(), 270, Interpolator.EASE_BOTH));
timeline2.getKeyFrames().add(kf);
timeline2.play();
}