javafx canvas
Carl Dea出现在11月的《 JAX杂志》上 ,使用Java的富客户端技术JavaFX花费了几个小时。
我最近参加了 去年 10月 由 Oracle 主办 的 JavaOne 2012会议 。 我的主要目标是将精力集中在与客户端Java有关的所有事情上,即使会话的标题中不包含“ JavaFX”。 令我惊讶的是,我收到的收益远远超出了讨价还价。 我参加了涉及 Dolphin , Griffon , Java Embedded , JavaFX 8等 技术的会议 。
我不禁为新的 JavaFX 8的3D API 感到垂涎三尺 。 但是, 我的 另一项 意图是查看 JavaFX 2.2 当前 版本 中添加的许多新功能 。 特别是,想到的一项功能是备受期待的Canvas API。 在本文中,您将了解使用JavaFX的 Canvas API 时的一些性能特征 ,稍后,我将分享一些代码,并教您如何仅在JavaFX的场景图上使用Canvas API而不是基于矢量来构建动画时钟。对应版本(JavaFX 2.1和更早版本)。
在JavaOne 2012大会上的许多JavaFX会议中,特别 引人注目的一届 是 Richard Bair的 ( CON6784 – JavaFX图形技巧和窍门 )。 JavaFX架构师Bair先生与流行的桌面操作系统(Windows,Linux / Ubuntu和Mac OS X)上的所有主要浏览器相比,讨论了JavaFX 2和JavaFX 8的图形渲染性能。 基准测试结果(遵循 GUIMark 2 )按“矢量”和“位图”图形渲染策略分类。 大多数HTML5 Web开发人员都熟悉,使用“矢量”呈现策略只是 SVG (可缩放矢量图形的XML表示)的 同义词 。 除此之外,“位图”呈现策略等效于使用流行的 HTML5 Canvas API( 使用JavaScript语言)的使用 。
当涉及矢量渲染策略时,性能数据表明JavaFX在Mac OS X上的Safari浏览器除外,其表现优于所有竞争对手。类似地,当涉及位图渲染策略时,性能指标表明JavaFX Canvas API的性能优于所有的浏览器。 Bair先生在解释何时,为什么以及如何在两种渲染策略之间进行选择方面做得非常出色。 Bair先生还指出,在某些情况下,JavaFX矢量图形甚至可以胜过JavaFX画布。 他还建议,当使用一种技术而不是另一种技术时,真正获得更准确图片的唯一方法是分析应用程序。 当然,他的演讲中讨论了更多内容。 但是,在本文中,我仅希望指出与Canvas API有关的信息。
在JavaFX的世界中,场景图主要基于“矢量”渲染策略,该策略将形状和路径计算为易于缩放的场景图节点。 对于那些回想起JavaFX 2.2之前的开发人员,您会记得何时没有能力处理位图图形(像素推送)。 您可能想知道,“如何使用“位图”策略在基于JavaFX矢量的场景图上进行渲染?” 自JavaFX 2.2发布以来,JavaFX团队创建了Canvas API。 Canvas API实际上是一个称为 Canvas 类 的JavaFX节点 。 由于 Canvas 类是从 javafx.scene.Node 类扩展的 ,因此它基本上是一个场景图节点,与任何其他JavaFX节点一样,除了您可以使用图形基元(Canvas API)直接在表面上绘制和操纵像素数据( GraphicsContext), )。
要在画布上绘制,必须首先实例化 具有宽度和高度 的 画布 节点。 实例化 Canvas 类后,您将需要获取其 Grap