JavaFX在Eclipse 中画图应用效果

1.在安装了e(fx)clipse插件后,把JavaFx JDK目录设定下,重启Eclipse。

点new-other会出现JavaFX project界面

然后新建class文件即可。


package HelloJavaFX;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.VPos;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.effect.BlendMode;
import javafx.scene.effect.Bloom;
import javafx.scene.effect.BoxBlur;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.GaussianBlur;
import javafx.scene.effect.Light.Distant;
import javafx.scene.effect.Lighting;
import javafx.scene.effect.MotionBlur;
import javafx.scene.effect.PerspectiveTransform;
import javafx.scene.effect.Reflection;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class HelloEffects extends Application{

	Stage stage;
	Scene scene;
	
	public static void main(String[] args) {
		launch(args);

	}

	@Override
	public void start(Stage stage) throws Exception {
		stage.show();
		scene = new Scene(new Group(), 650, 300);
        ObservableList<Node> content = ((Group)scene.getRoot()).getChildren();
        
        content.add(blendMode());
        content.add(bloom());
        content.add(boxBlur());
        content.add(motionBlur());
        content.add(gaussianBlur());
        content.add(dropShadow());
        content.add(reflection());
        content.add(lighting());
        content.add(perspective());
        content.add(chainEffects());
        
        stage.setScene(scene);
	}

	static Node blendMode(){
		Rectangle rect = new Rectangle();
		
		rect.setX(590);
		rect.setY(50);
		rect.setWidth(50);
		rect.setHeight(50);
		rect.setFill(Color.BLUE);
		
		Circle c = new Circle();
		c.setFill(Color.rgb(255, 0, 0, 0.5f));
		c.setCenterX(590);
		c.setCenterY(50);
		c.setRadius(25);
		
		Group g = new Group();
		g.setBlendMode(BlendMode.MULTIPLY);//blendMode混合模式//multiply:按比例增大
		g.getChildren().add(rect);
		g.getChildren().add(c);
		
		return g;
	}
	
	static Node bloom(){//bloom:开花、盛开
		Group g = new Group();
		
		Rectangle r = new Rectangle();
		r.setX(10);
		r.setY(10);
		r.setWidth(160);
		r.setHeight(80);
		r.setFill(Color.DARKBLUE);
		
		Text t = new Text();
		t.setText("Bloom!");
		t.setFill(Color.YELLOW);
		t.setFont(Font.font("null", FontWeight.BOLD,36));
		t.setX(25);
		t.setY(65);
		
		g.setCache(true);//Cache:快取、缓存
		
		Bloom bloom = new Bloom();
		bloom.setThreshold(1.0);//threshold:界限,限度 
		
		g.setEffect(bloom);
		g.setTranslateX(50);
		
		g.getChildren().add(r);
		g.getChildren().add(t);
		return g;
	}
	
	static Node boxBlur(){
		Text t = new Text();
		t.setText("Blurry Text!");
        t.setFill(Color.RED);
        t.setFont(Font.font("null", FontWeight.BOLD, 36));
        t.setX(10);
        t.setY(40);
        
        BoxBlur bb = new BoxBlur();//blur变模糊
        bb.setWidth(5);
        bb.setHeight(5);
        bb.setIterations(3);//Iterations:反复、迭代
        
        t.setTranslateX(300);
        t.setTranslateY(100);
        t.setEffect(bb);
        
		return t;
	}
	
	static Node motionBlur() {
        Text t = new Text();
        t.setX(20.0f);
        t.setY(80.0f);
        t.setText("Motion Blur");
        t.setFill(Color.RED);
        t.setFont(Font.font("null", FontWeight.BOLD, 60));
 
        MotionBlur mb = new MotionBlur();//motion移动   模糊
        mb.setRadius(15.0f);
        mb.setAngle(45.0f);
 
        t.setEffect(mb);
 
        t.setTranslateX(300);
        t.setTranslateY(150);
 
        return t;
    }
	
	static Node gaussianBlur() {//gaussian:高斯  模糊
        Text t2 = new Text();
        t2.setX(10.0f);
        t2.setY(140.0f);
        t2.setCache(true);
        t2.setText("Gaussian Blur");
        t2.setFill(Color.RED);
        t2.setFont(Font.font("null", FontWeight.BOLD, 36));
        t2.setEffect(new GaussianBlur());
        return t2;
    }
	
	static Node dropShadow(){
		Group g = new Group();
		
		DropShadow ds1 = new DropShadow();
        ds1.setOffsetY(4.0f);
        ds1.setOffsetX(4.0f);
        ds1.setColor(Color.CORAL);
 
        Circle c = new Circle();
        c.setEffect(ds1);
        c.setCenterX(50.0f);
        c.setCenterY(225.0f);
        c.setRadius(30.0f);
        c.setFill(Color.RED);
        c.setCache(true);
 
        g.getChildren().add(c);
		
		return g;
	}
	
	static Node reflection() {
        Text t = new Text();
        t.setX(10.0f);
        t.setY(50.0f);
        t.setCache(true);
        t.setText("Reflection in JavaFX...");
        t.setFill(Color.RED);
        t.setFont(Font.font("null", FontWeight.BOLD, 30));
 
        Reflection r = new Reflection();
        r.setFraction(0.9);
 
        t.setEffect(r);
 
        t.setTranslateY(400);
        return t;
    }
	
	static Node lighting() {
        Distant light = new Distant();
        light.setAzimuth(-135.0f);
 
        Lighting l = new Lighting();
        l.setLight(light);
        l.setSurfaceScale(5.0f);
 
        Text t = new Text();
        t.setText("JavaFX"+"\n"+"Lighting!");
        t.setFill(Color.RED);
        t.setFont(Font.font("null", FontWeight.BOLD, 70));
        t.setX(10.0f);
        t.setY(10.0f);
        t.setTextOrigin(VPos.TOP);
 
        t.setEffect(l);
 
        t.setTranslateX(350);
        t.setTranslateY(320);
 
        return t;
    }
	
	static Node perspective() {
        Group g = new Group();
        PerspectiveTransform pt = new PerspectiveTransform();
        pt.setUlx(10.0f);
        pt.setUly(10.0f);
        pt.setUrx(210.0f);
        pt.setUry(40.0f);
        pt.setLrx(210.0f);
        pt.setLry(60.0f);
        pt.setLlx(10.0f);
        pt.setLly(90.0f);
 
        g.setEffect(pt);
        g.setCache(true);
 
        Rectangle r = new Rectangle();
        r.setX(10.0f);
        r.setY(10.0f);
        r.setWidth(280.0f);
        r.setHeight(80.0f);
        r.setFill(Color.DARKBLUE);
 
        Text t = new Text();
        t.setX(400.0f);
        t.setY(465.0f);
        t.setText("Perspective");
        t.setFill(Color.RED);
        t.setFont(Font.font("null", FontWeight.BOLD, 36));
 
        g.getChildren().add(r);
        g.getChildren().add(t);
        return g;
    }
	
static Node chainEffects() {
        
        Rectangle rect = new Rectangle();
        rect.setFill(Color.RED);
        rect.setWidth(200);
        rect.setHeight(100);
        rect.setX(60.0f);
        rect.setY(550.0f);
 
        DropShadow ds = new DropShadow();
        ds.setOffsetY(5.0);
        ds.setOffsetX(5.0);
        ds.setColor(Color.GRAY);
        
        
        Reflection reflection = new Reflection();
 
        ds.setInput(reflection);    
        rect.setEffect(ds);
 
        return rect;
    }
}



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值