【发布时间】:2015-12-02 00:50:34
【问题描述】:
我正在开发一个轻量级的图形 API,以满足不同的需求,我想在图像显示之前对其进行渲染。我已经覆盖了 AWT 的组件以获得最高性能。但是,如果我在paint 方法中渲染图像(绘制线条、矩形和其他东西),如果该方法被频繁调用(例如,正在调整窗口大小或正在播放动画,则用户可以看到绘画过程)播放),这是一个非常注重性能的解决方案。
我决定单独缓存和渲染图像,并简单地将像素复制到 paint 方法中的 Graphics 对象。但现在我不知道如何将单个像素绘制到 Graphics 对象。我想底层的 Sun 实现有这样的方法,但我不应该解决那个类。我知道 Graphics 类声明了几个方法(drawLine、drawRect、fillRect 等),这些方法看起来很轻量级,只能用于绘制一个像素,但我不知道哪个最快。
由于某些内存问题,我不想使用 BufferedImage,因此 drawImage 在这种情况下不是解决方案。 this question 中也不是这种情况,因为我再次不使用图像,也没有在 paint 方法中创建新实例(渲染的图像数据类仅在调整组件大小时发生变化)。
tl;dr:java.awt.Graphics 中最快的方法,通过其坐标将某个像素的颜色设置为指定颜色(java.awt.Color 或 RGB,最后首选)。
提前谢谢你。
【问题讨论】:
标签: java performance graphics awt