Should Canvas have been Image subclass instead of Node?
Scott Palmer
swpalmer at gmail.com
Wed Apr 23 15:37:26 UTC 2014
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 <swpalmer at 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" <jeff at reportmill.com> wrote:
>>
>> Just by using it as an ImageView.Image.
>>
>> jeff
>>
>>
>> On Apr 22, 2014, at 5:43 PM, John C. Turnbull <ozemale at 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-bounces at openjdk.java.net] On
>> > Behalf Of
>> > Jeff Martin
>> > Sent: Wednesday, April 23, 2014 8:16 AM
>> > To: openjfx-dev at 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=
>> >
>>
>
More information about the openjfx-dev
mailing list