我不懂java(通常用c写)
如何有效地将像素数组内容嵌入到java窗口中?
我需要(循环)blit pixels[][]到一个窗口
我可以用类似的东西
pixels[][] -> MemoryImageSource -> Image -> drawImage
Run Code Online (Sandbox Code Playgroud)
但创建和删除 MemoryImageSource,并Image
在每一帧觉得奇怪,我-怎么可以简单地,合理高效地完成?有人可以给出一个代码示例,tnx
通常在Java中,使用本机Image类型并使用其派生图形更容易.在幕后, Java也使用blits,因此更高级别的抽象是为了减轻工作量.
但是,如果无法对像素数据进行抽象,则可以使用Raster和WritableRaster(可以替换部分数组)作为解决方案的替代方案.这些栅格可以与BufferedImage一起使用,然后可以使用您提到的drawImage方法绘制.我在这里找到了一种方法,它基本上创建了Image,然后检索栅格以供将来操作.
int x, y = 100;
BufferedImage image = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
WritableRaster raster = image.getRaster();
Run Code Online (Sandbox Code Playgroud)
然后可以操纵和重新绘制该栅格(或其中的一小部分).
这可能会略微提高性能,因为从像素阵列到屏幕的距离更短.但我认为很少有人完全理解AWT api的全部深度 - 这一切都取决于当然的原生实现 - 所以我的想法包含了一个健康的推测部分;-)但我希望它有所帮助..