我正在实现一个绘制矩形的应用程序,但现在我需要帮助来改变矩形的颜色,我有这个实现:
Pane root = new Pane();
int qtd = 10;
NumberBinding rectsAreaSize = Bindings.min(root.heightProperty(), root.widthProperty());
Text texto = new Text("Matriz C");
texto.setUnderline(true);
texto.setLayoutX(150);
texto.setLayoutY(400);
for (int x = 8; x < qtd + 8; x++) {
for (int y = 8; y < qtd + 8; y++) {
Rectangle retangulo3 = new Rectangle();
retangulo3.setStrokeWidth(2);
retangulo3.setStroke(Color.BLACK);
retangulo3.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
retangulo3.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));
retangulo3.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
retangulo3.widthProperty().bind(retangulo3.heightProperty());
retangulo3.setFill(Color.GREENYELLOW);
root.getChildren().add(retangulo3);
}
}
root.getChildren().add(texto);
Text texto1 = new Text("Matriz A");
texto1.setUnderline(true);
texto1.setLayoutX(1200);
texto1.setLayoutY(200);
for (int x = 30; x < qtd + 30; x++) {
for (int y = 2; y < qtd + 2; y++) {
Rectangle retangulo1 = new Rectangle();
retangulo1.setStrokeWidth(2);
retangulo1.setStroke(Color.BLACK);
retangulo1.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
retangulo1.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));
//retangulo.setHeight(10);
//retangulo.setWidth(10);
retangulo1.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
retangulo1.widthProperty().bind(retangulo1.heightProperty());
retangulo1.setFill(Color.WHITE);
root.getChildren().add(retangulo1);
}
}
root.getChildren().add(texto1);
Text texto2 = new Text("Matriz B");
texto2.setUnderline(true);
texto2.setLayoutX(1200);
texto2.setLayoutY(500);
for (int x = 30; x < qtd + 30; x++) {
for (int y = 13; y < qtd + 13; y++) {
Rectangle retangulo2 = new Rectangle();
retangulo2.setStrokeWidth(2);
retangulo2.setStroke(Color.BLACK);
retangulo2.xProperty().bind(rectsAreaSize.multiply(x).divide(qtd * 2.5));
retangulo2.yProperty().bind(rectsAreaSize.multiply(y).divide(qtd * 2.5));
//retangulo.setHeight(10);
//retangulo.setWidth(10);
retangulo2.heightProperty().bind(rectsAreaSize.divide(qtd * 2.5));
retangulo2.widthProperty().bind(retangulo2.heightProperty());
retangulo2.setFill(Color.WHITE);
root.getChildren().add(retangulo2);
}
}
root.getChildren().add(texto2);
palco.setScene(new Scene(root, 100, 100));
palco.show();
}
现在我想制作一个超值的值,并改变我的矩形颜色,如matriz乘法,所以我迷失在我的代码中,因为当我创建矩形时我有很多对象的实例,在同一个窗格中我有三个正方形矩形,我怎么能改变(x,y)的颜色像一个恐怖的东西?如何使用其他尺寸调整图像大小?
答案 0 :(得分:0)
嗯..关于矩形的定位逻辑,你应该计算它。如果您了解数学逻辑,就可以解决它。毕竟,我们在这里处理语言本身。
关于矩形如何从A点移动到B点,为此您可以使用JavaFX动画库。看看here来了解动画(如果您不知道)。请利用并查看链接中提到的所有类的JavaFX文档。阅读每一篇文章以获得更好的理解。
注意:如果您仍然是新手,或者从其他来源学习过JavaFX,您可以在this link上学到很多关于JavaFX(2.x)的知识。但我想你已经知道了,对吧?
嗯..关于JavaFX中的动画颜色,有一个很好的例子,说明如何在名为Ensemble的演示程序中完成此操作。您可以在下面提到“JavaFX示例演示和下载”的部分找到它。
此外,请记住,JavaFX动画库(主要是keyFrame,KeyValue和TimeLine)允许您创建任何bean JavaFX property的动画。您可以为某些端设置自己的JavaFX属性,然后按照您希望的方式为它们设置动画。在视频中演示的动画转换中,您可以使用单个时间轴对象来执行所有矩形的移动,以及每个矩形的颜色变化。
对于元素的所需运动,请使用Node类中的现有layoutXY属性。不要使用translateXY属性放置任何内容,因为它们是为了对Node对象位置进行小的最终调整。 layoutXY属性是定义固定位置的属性。在定义layoutXY时,最终可能会在程序中使用过渡动画来精确处理Node对象的translateXY属性。这就是您使用LayoutXY进行定位的原因。
根据您的程序逻辑(数学)和我通过的提示,我相信您可以轻松解决您的问题。如果您对某些事情仍然有疑问,请不要害羞地问。我最终的意图是帮助你。
祝你的项目好运。 :)