小编iha*_*dea的帖子

JavaFX:在给定透视变换窗格的节点上应用透视变换

我制作了一个小型演示来举例说明我遇到的问题.关于其使用的演练:

1 - 单击屏幕四次以创建网格.

2 - 单击底部的按钮,为创建的网格提供透视效果.

3 - 再次单击屏幕以绘制圆圈.

在此输入图像描述

我的问题是我不知道我应该在Circle节点上应用什么转换,以便在用户点击的确切位置获得与网格相同的视觉效果.

此时的演示只绘制一个没有变换的圆.

所需的输出如下(我在这里使用Ellipse而不是Circle作弊 - 这不是我的解决方案,因为用户输入了网格的四个坐标):

在此输入图像描述

这是演示的代码.

Main.java

package application;

import java.io.IOException;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource("View.fxml"));
            Scene scene = new Scene(loader.load(), 600, 600);
            primaryStage.setScene(scene);
            primaryStage.setTitle("Perspective Transformation");
            primaryStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

View.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<?import …
Run Code Online (Sandbox Code Playgroud)

javafx transformation javafx-8

11
推荐指数
1
解决办法
679
查看次数

是否有理由在.format中声明变量?

我正在网上关注某个Python教程,导师正在讲授这个.format()方法.

例如:

print("{}, {} and {} are colors.".format("Red", "Blue", "Green"))
Run Code Online (Sandbox Code Playgroud)

将输出

Red, Blue and Green are colors.
Run Code Online (Sandbox Code Playgroud)

也可以使用索引(也许这不是正确的措辞):

print("{0}, {1} and {2} are colors.".format("Red", "Blue", "Green"))
Run Code Online (Sandbox Code Playgroud)

这将输出相同的东西.

然而,他然后提出了另一种声明变量的方法(再次,可能这不是正确的措辞),如下所示:

print("{r}, {b} and {g} are colors.".format(r="Red", b="Blue", g="Green"))
Run Code Online (Sandbox Code Playgroud)

这再次输出相同的结果.

有没有使用像变量的任何优势r,bg里面.format()的方法?

我想到的一件事是我可以在程序中使用这些变量,但如果我尝试使用它们,我会得到一个NameError: name 'r' is not defined.

python

3
推荐指数
1
解决办法
79
查看次数

为什么我们在运行时没有提供有关Segmentation Fault的更多信息?

每当我收到Segmentation Fault错误时,我都知道我正在访问"不属于我"的内存.

在一些非显而易见的情况下,我必须依赖调试工具,例如探查器(例如Valgrind).

不幸的是,在运行时,我只收到以下错误消息:

分段故障

没有别的.我的问题是:


为什么程序在运行时没有提供有关错误的更多信息?


Ps:这不是关于为什么发生分段错误错误的问题:我理解为什么.

c++ segmentation-fault

0
推荐指数
1
解决办法
108
查看次数