欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaFX学习之Effect

程序员文章站 2022-06-08 10:41:50
...
[b]Effect[/b] 抽象类,所有特殊效果的父类。

[b]Blending[/b] 混合效果影响
对node设置blending有二种
node.setBlendMode(BlendMode arg0);  //这只是简单的设置用哪种混合效果模式

Blend blend = new Blend(); //这里可以设置更多的混合效果
blend.setMode(BlendMode.COLOR_BURN);
node.setEffect(Effect value)

Blend的属性
bottomInput,topInput 复合效果处理,设置接下来的效果。 也就说可以对一个node设置多个effect。
Blend没有setInput(Effect effect)方法,因为它涉及二块区域,重叠的部分有上下之分,所以就分为了setBottomInput(Effect value)和setTopInput(Effect value)
mode 采用哪种混合模式,可以看枚举类BlendMode
opacity 透明度

[b]Bloom[/b] 明亮效果,是效果更加明亮
Bloom bloom = new Bloom();
bloom.setThreshold(1.0); //通过此值,改变明亮效果,值从0到1。默认为0.3
node.setEffect(bloom);

属性
threshold 改变明亮效果
input 复合效果处理,设置接下来的效果

[b]Blur[/b] 模糊效果
BoxBlur bb = new BoxBlur();
bb.setWidth(5);
bb.setHeight(5);
bb.setIterations(3);
node.setEffect(bb);

属性:
height,width BoxBlur模糊效果是往上下左右扩展,所以这里就需要设置,效果展示的宽度和高度。
input 复合效果处理,设置接下来的效果
iterations 值越大效果越模糊,没明白意思
Min: 0
Max: 3
Default: 1
Identity: 0


MotionBlur mb = new MotionBlur();
mb.setRadius(15.0f);
mb.setAngle(45.0f);
node.setEffect(mb);

属性:
angle
radius
Min: 0.0
Max: 63.0
Default: 10.0
Identity: 0.0
input

[b]DropShadow [/b]阴影效果
DropShadow ds = new DropShadow();
ds.setOffsetY(3.0);
ds.setOffsetX(3.0);
ds.setColor(Color.GRAY);
node.setEffect(ds);

属性:
offsetX,offsetY 设置阴影的偏移位置
blurType 设置阴影的模糊类型
color 设置阴影的颜色
spread 阴影传播
Min: 0.0
Max: 1.0
Default: 0.0
Identity: 0.0
height,width 阴影模糊核心的宽高
input

[b]InnerShadow [/b] 内部阴影效果
InnerShadow is = new InnerShadow();
is.setOffsetX(2.0f);
is.setOffsetY(2.0f);
node.setEffect(is);

属性:
choke 外部阴影是用的spread
input

[b]Reflection[/b] 反射效果
Reflection r = new Reflection();
r.setFraction(0.9);
node.setEffect(r);

属性:
bottomOpacity,topOpacity 反射部分被分成了二半上和下,所以这里有设置下和上的透明度,可以看到默认的反射部分,下部分的透明度和上的不同,那时因为默认值不同,下部分的是0,上部分的是0.5.
fraction 反射显示的比率
topOffset 反射部分距离本体的距离
input

[b]Lighting[/b] 灯光效果
Distant light = new Distant();
light.setAzimuth(-135.0f);
Lighting l = new Lighting();
l.setLight(light);
l.setSurfaceScale(5.0f);
node.setEffect(l);

属性:
bumpInput , contentInput
diffuseConstant
light light有Light.Distant, Light.Point
specularConstant
specularExponent
surfaceScale 表面的比率因子,效果是更亮,感觉是密度大了, 不明白其意思

[b]PerspectiveTransform[/b] 远景效果
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);
node.setEffect(pt);

属性:
Ulx,Uly,Urx,Ury,Lrx,Lry,Llx,Lly //设置4个点位置,上左,上右,下右,下左
input

[b]ColorAdjust[/b] 颜色效果调节
colorAdjust = new ColorAdjust();
colorAdjust.setContrast(0.1);
colorAdjust.setHue(-0.05);
colorAdjust.setBrightness(0.1);
colorAdjust.setSaturation(0.2);
node.setEffect(colorAdjust);

属性:
Contrast 对比
Hue 色彩
Brightness 明亮度
Saturation 饱和度
input

[b]DisplacementMap[/b] 根据指定距离移动每一像素

[b]Glow[/b] 发热效果,一般都是设置图片的效果
imageView.setEffect(new Glow(0.8));  //发热效果
属性:
Level 通过设置改属性调节效果
Min: 0.0
Max: 1.0
Default: 0.3
Identity: 0.0
input

[b]SepiaTone[/b] 棕褐色调,一般都是设置图片的效果
SepiaTone sepiaTone = new SepiaTone(); //棕褐色调,加在图片上后,感觉很古老
sepiaTone.setLevel(0.7);
imageView.setEffect(sepiaTone);

属性:
Level 通过设置改属性调节效果
Min: 0.0
Max: 1.0
Default: 0.3
Identity: 0.0
input

[b]ColorInput[/b] 一个矩形加颜色渲染。 不明白这个的用处
ColorInput colorInput = new ColorInput();
colorInput.setPaint(Color.STEELBLUE);
colorInput.setX(10);
colorInput.setY(10);
colorInput.setWidth(100);
colorInput.setHeight(180);

属性:
x,y坐标
width,height 宽高
paint 渲染的颜色

ImageInput 一个图片加颜色渲染
属性
x,y位置
source 源图片


在一个node中,同时加几个效果
setInput(Effect effect);  //大部分effect都有setInput方法,设置接下来的效果影响



求评论,求解答,都是自己理解,可能错了,有些也不知道。