gpt4 book ai didi

java - 将 id 设置为 JavaFX Canvas 上的对象

转载 作者:行者123 更新时间:2023-11-30 06:41:05 26 4
gpt4 key购买 nike

我想使用GraphicsContext在 Canvas 上绘制矩形、线条等。

Rectangle rect = new Rectangle(20,20,10,10);
rect.setId("myRect");
gc.draw(rect);

JavaFX中有类似的东西吗?或者有没有办法访问绘制的 Canvas 对象?

最佳答案

据我所知,你不能直接在 Canvas 上绘制矩形 - 矩形是一个JavaFX节点,但Canvas API的级别要低得多,并且只需要非常基本的绘图命令。例如,为了绘制矩形,它将是:

GraphicsContext gc = theCanvas.getGraphicsContext2D();
gc.fillRect(20,20,10,10);

但是,这不允许您进一步操作矩形。我所做的是使用绘制方法创建一个自定义类 DrawableRectangle (例如):

public class DrawableRectangle extends Rectangle {

Canvas theCanvas;

public DrawableRectangle(Rectangle r, Canvas c){
super(r.getX(),r.getY(),r.getWidth(),r.getHeight());
this.theCanvas = c;
}
public DrawableRectangle(int x, int y, int w, int h, Canvas c){
super(x,y,w,h);
this.theCanvas = c;
}

public void draw(){
GraphicsContext gc = theCanvas.getGraphicsContext2D();
gc.setFill(Paint.valueOf("black"));
gc.fillRect(getX(),getY(),getWidth(),getHeight());
}

}

然后您可以像这样使用:

    GraphicsContext gc = theCanvas.getGraphicsContext2D();
DrawableRectangle rect = new DrawableRectangle(10,10,20,20, theCanvas);

// Draw it:
rect.draw();

// You can then manipulate it:
rect.setY(40);
rect.setHeight(60);

// You need to draw it again to see the changes:
// First clear the canvas:
gc.clearRect(0,0,theCanvas.getWidth(),theCanvas.getHeight());
// Then draw it:
rect.draw();

(我不能保证这是最好的方法,但它对我来说效果很好。如果你想用这种方式绘制不同的形状,你应该创建一个 Drawable 接口(interface)来抽象它。)

关于java - 将 id 设置为 JavaFX Canvas 上的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44364787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com