Here's a quick hack based on using snapshots to make something like a
Canvas that you can reuse in many places within the Scene.  By
subclassing WritableImage it comes out to being pretty close to what
you were talking about.  As you mentioned, using snapshots isn't
ideal, but I wonder how far from ideal this really is?  Having to
remember to make the snapshot is just one call.

public class CanvasImage extends WritableImage {

private final Canvas canvas;
private final SnapshotParameters snapshotParams;

public CanvasImage(int width, int height) {
super(width, height);
canvas = new Canvas(width, height);
snapshotParams = new SnapshotParameters();
snapshotParams.setFill(Color.TRANSPARENT);
}

public GraphicsContext beginDrawing() {
return canvas.getGraphicsContext2D();
}

public void endDrawing() {
canvas.snapshot(snapshotParams, this);
}
}

Cheers,

Scott

On Tue, Apr 22, 2014 at 7:01 PM, Scott Palmer <swpal...@gmail.com> wrote:
> It would be great if you could get a Graphics context for drawing into a
> WritableImage instead of having to deal with snapshots. But I suppose you
> could build something like that based on Canvas that would update an image.
>
> Scott
>
> On Apr 22, 2014 6:52 PM, "Jeff Martin" <j...@reportmill.com> wrote:
>>
>> Just by using it as an ImageView.Image.
>>
>> jeff
>>
>>
>> On Apr 22, 2014, at 5:43 PM, John C. Turnbull <ozem...@ozemail.com.au>
>> wrote:
>>
>> > How would you (easily) use it in the scenegraph if it wasn't a Node?
>> >
>> > -----Original Message-----
>> > From: openjfx-dev [mailto:openjfx-dev-boun...@openjdk.java.net] On
>> > Behalf Of
>> > Jeff Martin
>> > Sent: Wednesday, April 23, 2014 8:16 AM
>> > To: openjfx-dev@openjdk.java.net Mailing
>> > Subject: Should Canvas have been Image subclass instead of Node?
>> >
>> > I have a case where I need to draw to a canvas and reuse it in multiple
>> > nodes. My non-optimal work-around is to take a snapshot and use that,
>> > but it
>> > makes me wonder if Canvas should have been an Image subclass or if
>> > WritableImage should get it's own getGraphicsContext() method.
>> >
>> > jeff=
>> >
>>
>

Reply via email to