我是javafx的新手
知道为什么下面的代码不起作用可能会有所帮助。 (第31行:pw无法解决)
但是,如果我知道我可能做错了什么或做得不够,那也很好
最终的目标是让它在屏幕上按像素绘制图片
然而,那张照片不太确定,我希望能够从多个不同的类别中为该图像添加像素。
也可以在顶部添加某种更传统的UI,但这不是优先考虑的事情。
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.image.PixelWriter;
import javafx.scene.canvas.*;
public class Render extends Application {
public static void render(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Placeholder Title");
Canvas canvas = new Canvas(1280, 720);
Group root = new Group(canvas);
Scene scene = new Scene(root, 1280, 720);
stage.setScene(scene);
PixelWriter pw = canvas.getGraphicsContext2D().getPixelWriter();
stage.show();
}
private static void testRender() {
int c = -1;
for (int x = 0; x < 1280; x++) {
for (int y = 0; y < 720; y++, c--) {
pw.setArgb(x, y, c);
}
}
}
}
答案 0 :(得分:1)
您可以通过此链接开始使用JavaFX。
https://docs.oracle.com/javase/8/javafx/get-started-tutorial/
答案 1 :(得分:0)
由于我在评论中的解释似乎不清楚,我会尝试通过修改代码来解释(未经过测试,我会尝试帮助解决它可能包含的任何错误)。
选项1:将访问的变量存储为类成员:
c
选项2:将访问的实例作为参数传递:
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.image.PixelWriter;
import javafx.scene.canvas.*;
public class Render extends Application {
private PixelWriter pw;
public static void render(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Placeholder Title");
Canvas canvas = new Canvas(1280, 720);
Group root = new Group(canvas);
Scene scene = new Scene(root, 1280, 720);
stage.setScene(scene);
pw = canvas.getGraphicsContext2D().getPixelWriter();
testRender(); // we can't call this before everything has been initialized anyway
stage.show();
}
// this doesn't need to be static
private void testRender() {
int c = -1;
for (int x = 0; x < 1280; x++) {
for (int y = 0; y < 720; y++, c--) {
pw.setArgb(x, y, c);
}
}
}
}
我希望这有助于您了解可能的解决方案