首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaFX中的矩形或圆形内添加图像?

如何在JavaFX中的矩形或圆形内添加图像?
EN

Stack Overflow用户
提问于 2014-04-04 04:55:46
回答 2查看 25.1K关注 0票数 6

假设我们有一个名为r的矩形

代码语言:javascript
复制
Rectangle r = new Rectangle(40, 20);

和一个名为image的图像

代码语言:javascript
复制
Image image = new Image("...src for image");

如何将图像放入矩形内?另外,如果矩形也在移动,我如何才能使图像移动?我如何对一个圆做同样的事情?代码示例非常受欢迎。

另外,珠海,我在等你,哈哈!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 06:03:03

如果你想用图片填充矩形,你可以这样做:-在你的fxml文件中添加一个圆

代码语言:javascript
复制
<Rectangle fx:id="imgMenuUser" />

在您的控制器中

代码语言:javascript
复制
@FXML
private Rectangle rectangle;
Image img = new Image("/image/rifat.jpg");
rectangle.setFill(new ImagePattern(img));
票数 12
EN

Stack Overflow用户

发布于 2014-04-04 06:04:28

如何将图像放入矩形内?

将形状和图像放在StackPane中。

另外,如果矩形也在移动,我如何才能使图像移动?

只需移动StackPane即可。

代码语言:javascript
复制
import javafx.application.Application;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.geometry.Point2D;
import javafx.stage.Stage;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Pane root = new Pane();

            StackPane imageContainer = new StackPane();
            ImageView image = new ImageView(...);
            imageContainer.getChildren().addAll(new Rectangle(64, 48, Color.CORNFLOWERBLUE), image);
            enableDragging(imageContainer);

            root.getChildren().add(imageContainer);

            Scene scene = new Scene(root,800,600);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private void enableDragging(Node node) {
        final ObjectProperty<Point2D> mouseAnchor = new SimpleObjectProperty<>();
        node.setOnMousePressed( event -> mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY())));
        node.setOnMouseDragged( event -> {
            double deltaX = event.getSceneX() - mouseAnchor.get().getX();
            double deltaY = event.getSceneY() - mouseAnchor.get().getY();
            node.relocate(node.getLayoutX()+deltaX, node.getLayoutY()+deltaY);
            mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY()));;
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22848829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档