java – Graphics2D和GraphicsContext之间的互操作性
我正在与一个正在寻找
Java中的图形渲染器的组合进行合作.目前我正在设法确定目标
java.awt.Graphics2D是否向前兼容.也就是说,其他图书馆,如JavaFX显示器是否可以从Graphics2D实例渲染?
java.awt.Graphics2D和
javafx.scene.canvas.GraphicsContext之间是否有互操作性?
或者,如果没有Graphics2D和GraphicsContext之间的直接,有没有办法在JavaFX应用程序中显示Graphics2D渲染,类似于Swing在Panel中显示Graphics2D渲染? 编辑: 如果不是这个问题,我对Java生态系统来说相当新鲜.对于更多的上下文,我在互联网搜索中发现的大多数事情是示例/教程,解释了如何在JavaFX(参见Example Article)中完成AWT中的工作,这不能解答我的问题,但是会导致我猜测那里没有互操作性.不过,我希望有更熟悉生态系统的人可以直接回答这个问题. 解决方法
awt
Graphics2D和JavaFX
GraphicsContext之间没有内置的互操作性,它们是完全独立的API,用于完全独立的UI工具包.
建议 是否有修改或插入现有Swing应用程序的要求? 是=>代码到java.awt.Graphics接口和(嵌入在JavaFX中)将您的awt渲染图形包装在SwingNode中,或者使用如下定义的网桥. 否=>代码直接指向JavaFX图形上下文或JavaFX场景图. 在JavaFX中显示Swing(和AWT) 要在JavaFX中显示Swing,可以使用Java 8 early access release中的SwingNode. 在Swing中显示JavaFX 要在Swing中显示JavaFX,可以使用JFXPanel.将JavaFX画布放入JFXPanel.有关更多信息,请参阅JavaFX for Swing Developers教程. 连接AWT和JavaFX图形 您可以实现bridge pattern开发抽象界面,然后委派给已配置的Graphics实现.我链接的wiki页面提供了一个很好的例子,说明如何做到这一点.我认为这样一个桥梁的实施是相当直截了当的.例如,您可以实现java.awt.Graphics并将api调用映射到JavaFX GraphicsContext操作.一旦你的桥接完成,你只需要编写桥接口,桥就可以根据你选择的实现,将你的api调用转换成线程安全的awt或javafx方法调用. 更新日:2014年5月20日 大卫吉尔伯特(JFreeChart创建者)创建了一座桥梁.该项目是FXGraphics2D:
FXGraphics2D home page和github location. 线程建议 如果要混合JavaFX和Swing代码,请注意如何管理线程.两个工具包都是单线程的,两个工具包都在自己的线程上运行它们的处理,所以JavaFX代码必须在JavaFX线程上运行,并且Swing代码必须在Swing线程上运行. 考虑JavaFX SceneGraph JavaFX包括一个能够呈现2D shapes的scene graph.考虑使用场景图而不是直接绘制画布. 未来的可能性 JavaFX的未来版本很可能包括像OpenGLNode这样的内容,可以直接渲染到OpenGL缓冲区.用于绘制这样一个节点的API可能会显着不同于JavaFX画布API(例如,它将使用类似于jogl). 关于您链接的示例文章的注释 您在问题中链接的文章与JavaFX 1.x.一般来说,完全忽视与JavaFX 1.x相关的所有旧文章,因为它完全是过时的,并且这些文章中的任何信息都可能会让你大吃一惊. 与JavaFX 2相关的文章是相关的,最佳的来源是official Oracle JavaFX 2 documention. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |