我制作了一个小型演示来举例说明我遇到的问题.关于其使用的演练:
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) 我正在网上关注某个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,b而g里面.format()的方法?
我想到的一件事是我可以在程序中使用这些变量,但如果我尝试使用它们,我会得到一个NameError: name 'r' is not defined.
每当我收到Segmentation Fault错误时,我都知道我正在访问"不属于我"的内存.
在一些非显而易见的情况下,我必须依赖调试工具,例如探查器(例如Valgrind).
不幸的是,在运行时,我只收到以下错误消息:
分段故障
没有别的.我的问题是:
为什么程序在运行时没有提供有关错误的更多信息?
Ps:这不是关于为什么发生分段错误错误的问题:我理解为什么.