2014-02-27 21 views

回答

12

解决方案

放置在一个Group两个图像,并通过设置blendMode of the topmost Node应用BlendMode

ImageView bottom = new ImageView(coke); 
ImageView top = new ImageView(pepsi); 
top.setBlendMode(BlendMode.DIFFERENCE); 

Group blend = new Group(
     bottom, 
     top 
); 

可执行样品

采取百事可乐的挑战?您看得出来差别吗?

PepsiChallenge

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.effect.BlendMode; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.HBox; 
import javafx.stage.Stage; 

/** Blend a coke can and a pepsi can to find the difference. */ 
public class PepsiChallenge extends Application { 
    @Override 
    public void start(Stage stage) { 
     Image coke = new Image(
      "http://icons.iconarchive.com/icons/michael/coke-pepsi/256/Coca-Cola-Can-icon.png" 
     ); 

     Image pepsi = new Image(
      "http://icons.iconarchive.com/icons/michael/coke-pepsi/256/Pepsi-Can-icon.png" 
     ); 

     ImageView bottom = new ImageView(coke); 
     ImageView top = new ImageView(pepsi); 
     top.setBlendMode(BlendMode.DIFFERENCE); 

     Group blend = new Group(
       bottom, 
       top 
     ); 

     HBox layout = new HBox(10); 
     layout.getChildren().addAll(
       new ImageView(coke), 
       blend, 
       new ImageView(pepsi) 
     ); 
     layout.setPadding(new Insets(10)); 
     stage.setScene(new Scene(layout)); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(); 
    } 
} 
+0

你可以帮我解决这个问题? http://stackoverflow.com/q/22088217/2722799 –

+0

嗯..我知道你在javaFX方面经验太丰富了,因为我在所有问题中总是从你的答案中获得帮助。所以我认为你可能会帮助我完成。 。 提前致谢 –