Java 类javafx.scene.effect.FloatMap 实例源码
项目:openjfx-8u-dev-tests
文件:CanvasEffects2App.java
List<NamedEffect> getNamedEffectList() {
final FloatMap mapWaves = new FloatMap();
mapWaves.setWidth(100);
mapWaves.setHeight(80);
for (int i = 0; i < mapWaves.getWidth()-1; i++) {
float v = (float) ((Math.sin(i / 30f * Math.PI) - 0.5f) / 20f);
for (int j = 0; j < mapWaves.getHeight()-1; j++) {
mapWaves.setSamples(i, j, 0f, v);
}
}
List<NamedEffect> nes = new ArrayList<NamedEffect>();
nes.add(new NamedEffect("defaults", new DisplacementMap() {{ setMapData(mapWaves); }}));
nes.add(new NamedEffect("scale", new DisplacementMap() {{ setMapData(mapWaves); setScaleX(1.2f); setScaleY(2.0f);}}));
nes.add(new NamedEffect("offset", new DisplacementMap() {{ setMapData(mapWaves); setOffsetX(0.2f); setOffsetY(0.1f);}}));
nes.add(new NamedEffect("wrap", new DisplacementMap() {{ setMapData(mapWaves); setWrap(true); setOffsetX(0.5f); setOffsetY(0.3f);}}));
return nes;
}
项目:javafx-demos
文件:DisplacementMapDemo.java
private void compute(double w, double h){
FloatMap floatMap = new FloatMap();
int w1 = (int)w;
int h1 = (int)h;
floatMap.setWidth(w1);
floatMap.setHeight(h1);
for (int i = 0; i < w1; i++) {
double v = (Math.sin(i / 20.0 * Math.PI) - 0.5) / 40.0;
for (int j = 0; j < h1; j++) {
floatMap.setSamples(i, j, 0.0f, (float) v);
}
}
displacementMap.setMapData(floatMap);
}
项目:javafx-demos
文件:ScrollPaneDisplacementDemo.java
private void applyEffect(ScrollPane scroll) {
DisplacementMap displacementMap = new DisplacementMap();
FloatMap floatMap = new FloatMap((int) width, (int) height);
for (int i = 0; i < (int) width; i++) {
double v = (Math.sin(i / 50.0 * Math.PI) - 1) / 10.0;
for (int j = 0; j < (int) height; j++) {
floatMap.setSamples(i, j, 0, (float) v);
}
}
displacementMap.setMapData(floatMap);
scroll.setEffect(displacementMap);
}
项目:javafx-demos
文件:ScrollPaneDisplacementDemo.java
private void applyCosWaveEffect(ScrollPane scroll) {
DisplacementMap displacementMap = new DisplacementMap();
FloatMap floatMap = new FloatMap((int) width, (int) height);
for (int i = 0; i < (int) width; i++) {
double v = (Math.cos(i / 20.0 * Math.PI) - 0.5) / 40.0;
for (int j = 0; j < (int) height; j++) {
floatMap.setSamples(i, j, 0, (float) v);
}
}
displacementMap.setMapData(floatMap);
scroll.setEffect(displacementMap);
}
项目:javafx-demos
文件:ScrollPaneDisplacementDemo.java
private void applySineWaveEffect(ScrollPane scroll) {
DisplacementMap displacementMap = new DisplacementMap();
FloatMap floatMap = new FloatMap((int) width, (int) height);
for (int i = 0; i < (int) width; i++) {
double v = (Math.sin(i / 20.0 * Math.PI) - 0.5) / 40.0;
for (int j = 0; j < (int) height; j++) {
floatMap.setSamples(i, j, 0, (float) v);
}
}
displacementMap.setMapData(floatMap);
scroll.setEffect(displacementMap);
}
项目:javafx-demos
文件:DisplacementMapBannerDemo.java
@Override
public void start(Stage stage) throws Exception {
this.stage = stage;
configureScene();
configureStage();
// Logic starts
for (int i = 0; i < BANNER_NB; i++) {
maps[i] = new FloatMap(W, H);
}
for (int x = 0; x < W/2; x++) {
double angle = Math.PI * x / 50.0;
float v = (float) (Math.sin(angle) / 20.0);
float scaledX = x / W;
System.out.println(x + " : " + angle + " : " + v);
for (int y = 0; y < H; y++) {
float scaledY = y / H;
float scaledV = (float) (v - (1.0 - scaledY) / 20.0);
maps[0].setSamples(x, y, 0, 0);
maps[1].setSamples(x, y, v);
maps[2].setSamples(x, y, 0, scaledV);
maps[3].setSamples(x, y, v, scaledV);
double sq = Math.sqrt(x * x + y * y);
maps[4].setSamples(x, y, (float) ((115 - sq) / 115.0));
maps[5].setSamples(x, y, 0, (float) (scaledX * scaledY * 4.7));
maps[6].setSamples(x, y, 0, (float) (scaledX * 0.5));
maps[7].setSamples(x, y, (float) (scaledY * 0.5));
}
}
String[] messages = { "Reference", "Accordion", "Wavy Text", "Dizzy Text", "OxoXoxO", "XoxOxoX", "13463463", "2346346436" };
VBox vb = new VBox();
vb.setSpacing(15);
for (int k = 0; k < messages.length; k++) {
vb.getChildren().add(
GroupBuilder.create().effect(DisplacementMapBuilder.create().mapData(maps[k]).wrap(bTestWrap).build()).cache(true)
.children(new Banner(messages[k])).build());
}
root.getChildren().add(
ScrollPaneBuilder.create().fitToHeight(true).fitToWidth(true).style("-fx-background-color:transparent;").content(vb)
.build());
}