【问题标题】:How to change between wireframe and solid in javafx如何在javafx中在线框和实体之间切换
【发布时间】:2023-01-09 10:09:25
【问题描述】:

3d 软件允许用户动态更改绘图模式。它可以在 javafx 上实现吗?

【问题讨论】:

    标签: java javafx 3d javafx-3d


    【解决方案1】:

    使用单选按钮更改绘制模式

    在这种方法中,Box 实例使用单选按钮更改其 DrawMode

    这是您可以尝试的单一类 javafx。

    应用程序java

    public class App extends Application {
    
        @Override
        public void start(Stage stage) {
    
            var perspective = new PerspectiveCamera(true);
            perspective.setNearClip(0.1);
            perspective.setFarClip(500);
            perspective.setTranslateZ(-150);
            
            
            
            Shape3D cube = new Box(50, 50, 50);
            cube.setCullFace(CullFace.NONE);
            cube.setMaterial(new PhongMaterial(Color.CORAL));
    
            var toggleGroup = new ToggleGroup();
            var solid = new RadioButton("solid");
            solid.setToggleGroup(toggleGroup);
            solid.setSelected(true);
            var wire = new RadioButton("wireframe");
            wire.setToggleGroup(toggleGroup);
    
            var hBox = new HBox(solid, wire);
    
            toggleGroup.selectedToggleProperty().addListener((o) -> {
                Toggle selectedToggle = toggleGroup.getSelectedToggle();
    
                if (selectedToggle == solid) {
                    cube.setDrawMode(DrawMode.FILL);
                }
                if (selectedToggle == wire) {
                    cube.setDrawMode(DrawMode.LINE);
    
                }
    
            });
    
            var group3d = new Group(perspective, cube);
    
            var subscene = new SubScene(group3d, 300, 400, true, SceneAntialiasing.BALANCED);
            subscene.setCamera(perspective);
    
            var stack = new StackPane(subscene, hBox);
    
            stage.setScene(new Scene(stack, 300, 400));
            stage.show();
        }
    
        public static void main(String[] args) {
            launch();
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 2020-03-23
      • 2015-07-09
      • 2019-06-17
      • 2016-09-09
      • 1970-01-01
      • 2013-04-17
      • 2018-09-03
      相关资源
      最近更新 更多