所以我正在尝试创建在画布上绘制轴的东西。我想使用 setStroke 方法将轴的颜色设置为红色,但它告诉我我给出了错误的类型参数。令我困惑的是,虽然使用某人的示例代码,但它根本没有给出错误。我的代码:
package lissa;
import java.awt.Color;
import javafx.scene.Node;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
public class kalf extends Canvas{
private GraphicsContext gc ;
private Color kleurAs;
public kalf(Node achtergrond){
super(); // hoe moet je de grootte instellen?
gc = getGraphicsContext2D();
kleurAs = Color.RED;
tekenAs(gc);
}
public void tekenAs(GraphicsContext gc){
//这里有问题
gc.setStroke(kleurAs);
gc.strokeLine(d, d1, d2, d3);
}
示例代码:
public class LissajousCanvas extends Canvas {
private final LissajousData data;
private static final int AANT_PTN = 200;
private static final int RAND = 5;
private final GraphicsContext gc;
private final int factor;
private Color kleurAs;
private ContextMenu menu;
public LissajousCanvas(LissajousData data, double width, double height) {
super(width, height);
this.data = data;
gc = this.getGraphicsContext2D();
factor = Math.min((int) getWidth(), (int) getHeight()) - 2 * RAND;
kleurAs = Color.RED;
tekenAssen();
getStyleClass().add("canvas");
maakContextMenu();
final LissajousCanvas canvas = this;
addEventHandler(MouseEvent.MOUSE_CLICKED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
if (e.getButton() == MouseButton.SECONDARY) {
menu.show(canvas, e.getScreenX(), e.getScreenY());
}
}
});
}
private void tekenAssen() {
//这是正确使用它的地方,同时仍然使用 GraphicsContext 作为调用者 + 有一个
//参数颜色
gc.setStroke(kleurAs);
gc.strokeLine(0, factor / 2 + RAND, factor + 2 * RAND, factor / 2 + RAND);
gc.strokeLine(factor / 2 + RAND, 0, factor / 2 + RAND, factor + 2 * RAND);
}
}
任何想法为什么第一段代码不正确而第二段代码不正确?