2013-04-25 66 views
1

我想将一个简单的光栅图形编辑器放入我的JavaFX应用程序中。
看来,它不能使用javafx.scene.image.Image来完成,因为图形对象是只读的。
有人可以指出我该怎么做,或者有一些类可以直接访问像素图吗?是否有任何JavaFX图像编辑器?

UPD:没有必要为编辑器迅速做出反应,所以建议一拉创建隐藏java.awt.Canvas,处理上ImageView的所有事件画在画布上,一些创造是指从输出流画布来创建新的javafx图像并将其放到ImageView

回答

7

您可以使用JavaFX canvas来执行此操作,如Canvas Tutorial“与用户交互”部分所示。您不需要java.awt.Canvas

可以采取一个帆布的snapshot(或任何其它节点),以创建一个图像。

可以从现有的图像使用PixelReader读出的像素的地图,并使用如图所示的ImageOps tutorialsWritableImage获得的PixelWriter写入的图像的像素图。

为了您的最终图像写入到磁盘,convert it to a BufferedImage使用ImageIO写出来。

如果你需要它,有缩放图像的像素化形式(类似于微软画图变焦功能)的样本:JavaFX ImageView without any smoothing

+0

是否可以直接在'Canvas'上禁用图像平滑?我正在开发一个类似的项目,如果可能的话,我想避免隐藏'Canvas'。 'Canvas.setScaleX()'及其变体都创建了消除锯齿的图像,我需要为精灵编辑器显示清晰的图像。 – sorbet 2014-03-28 03:27:27

+0

我觉得不是冰糕。我认为唯一的方法是从画布上读取像素,然后编写自己的缩放逻辑,类似于[JavaFX ImageView,没有任何平滑](http://stackoverflow.com/questions/16089304/javafx-imageview-而不-任何平滑)。您的问题与原始问题略有不同。我鼓励你创建一个新问题(链接回到这个问题和图像平滑问题,以帮助答复者理解问题)。 – jewelsea 2014-03-28 06:27:21