0
这可能是最简单的问题。我有一个JavaFX Canvas
设置是这样的:删除GraphicsContext剪辑
Canvas canvas = new Canvas(300, 300);
GraphicsContext context = canvas.getGraphicsContext2D();
// make a big rectangle
context.setFill(Color.BLUE);
context.fillRect(50, 50, 200, 200);
// clip
context.beginPath();
context.rect(100, 100, 100, 100);
context.closePath();
context.clip();
// so now this draws a clipped smaller rectangle
context.setFill(Color.RED);
context.fillRect(50, 50, 200, 200);
context.removeClip(); // ???
// remove clip so this white rectangle is shown
context.setStroke(Color.WHITE);
context.setLineWidth(3);
context.strokeRect(75, 75, 150, 150);
我试图GraphicsContext#restore()
(用于恢复一切,但剪裁,创造一个矩形路径从0开始| 0和与画布的大小,并再次呼吁clip()
如何删除从GraphicsContext
?
我不使用画布很多,所以我不确定这个,但它看起来像['context.restore()'](http://docs.oracle.com/javase/8/javafx/ api/javafx/scene/canvas/GraphicsContext.html#restore--)应该删除剪辑。在调用'clip()'之前,您可能需要/希望调用'context.save()'来保留一些其他值,这些值将由'restore()'回滚。 –
事实上,你必须先调用save(),然后才能调用restore()。这来自还原方法的文档。 “如果堆栈是空的,则不会改变。” – mipa