JavaFX Demo1

package com.xiuye.javafx;

import java.util.Random;

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.effect.BlendMode;
import javafx.scene.effect.BoxBlur;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.StrokeType;
import javafx.stage.Stage;
import javafx.util.Duration;

public class ColorfulCircles extends Application {

	@Override
	public void start(Stage primaryStage) throws Exception {
		Group root = new Group();
		Scene scene = new Scene(root, 800, 600, Color.BLACK);
		Rectangle colors = new Rectangle(scene.getWidth(), scene.getHeight(),
				new LinearGradient(0f, 1f, 1f, 0f, true, CycleMethod.NO_CYCLE,
						new Stop[] { new Stop(0, Color.web("#f8bd55")), new Stop(0.14, Color.web("#c0fe56")),
								new Stop(0.28, Color.web("#5dfbc1")), new Stop(0.43, Color.web("#64c2f8")),
								new Stop(0.57, Color.web("#be4af7")), new Stop(0.71, Color.web("#ed5fc2")),
								new Stop(0.85, Color.web("#ef504c")), new Stop(1, Color.web("#f2660f")), }));
		colors.widthProperty().bind(scene.widthProperty());
		colors.heightProperty().bind(scene.heightProperty());

		Group circles = new Group();
		for (int i = 0; i < 30; i++) {
			Circle circle = new Circle(150, Color.web("white", 0.05));// 图形的背景色
			circle.setStrokeType(StrokeType.OUTSIDE);
			circle.setStroke(Color.web("white", 0.16));// 图形的边框颜色
			circle.setStrokeWidth(4);
			circles.getChildren().add(circle);
		}
		circles.setEffect(new BoxBlur(10, 10, 3));
		Group blendModeGroup = new Group(
				new Group(new Rectangle(scene.getWidth(), scene.getHeight(), Color.BLACK), circles), colors);
		colors.setBlendMode(BlendMode.OVERLAY);

		// 后面添加的图形会覆盖前面添加的图形,所以一定要注意添加图形的顺序
		// 下面代码的效果是灰色的
		// root.getChildren().add(colors);
		// root.getChildren().add(circles);
		// 混合彩色的
		root.getChildren().add(blendModeGroup);

		Timeline timeline = new Timeline();
		for (Node circle : circles.getChildren()) {
			timeline.getKeyFrames()
					.addAll(new KeyFrame(Duration.ZERO, // set start position at
														// 0
							new KeyValue(circle.translateXProperty(), random() * 800),
							new KeyValue(circle.translateYProperty(), random() * 600)),
							new KeyFrame(new Duration(40000), // set end
																// position at
																// 40s
									new KeyValue(circle.translateXProperty(), random() * 800),
									new KeyValue(circle.translateYProperty(), random() * 600)));
		}

		primaryStage.setScene(scene);

		primaryStage.setTitle("ColorfulCircles");

		// play 40s of animation
		timeline.play();
		primaryStage.show();

	}

	private float random() {

		return new Random().nextFloat();
	}

	private static <T> void log(T t) {
		System.out.println(t);
	}

	public static void main(String[] args) {
		log("JavaFX Application Begin...");
		launch(args);
	}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值