【发布时间】:2014-08-18 21:54:58
【问题描述】:
您能否建议一种从调试器中识别呈现错误来源的方法?
Misko Hevery classifies 将错误分为三类:
- 逻辑
- 接线
- 渲染
我很清楚我的问题是渲染错误。
我有一个带有包含多个层的面板的 Swing 应用程序。渲染所有图层可能需要大量时间,因此应用程序使用线程池将图层和切片从图层渲染到 BufferedImages。当 Event Dispatch Thread 渲染面板时,最近渲染的 BufferedImage 会被绘制到屏幕上。
此设置运行良好。
一项新功能要求某种图层类型支持透明度。某处,某处没有保持透明度。错误可能在很多地方,可能在要渲染的对象的实现中,错误可能在离线渲染线程的实现中。许多 BufferedImage 在 EDT 渲染代码中可能没有正确组合在一起。
我没有要求任何人查看代码并告诉我错误在哪里。
我想知道人们发现哪些技术在解决 Graphics2D 渲染问题时特别有效。
我是单元测试的坚定支持者,但我更愿意从另一种技术开始。
是否有一种方法或技巧可以从调试器中直观地检查 BufferedImage 或 Graphics2D 对象?
在 Netbeans 变量和监视窗口 Netbeans 有时使用 PropertyEditor 来显示变量值。在此示例图像中,foregroundColor 和 backgroundColor 的值显示为 Color 值的小样本。
是否有一种简单的方法可以添加/启用 Netbeans PropertyEditor 来显示 BufferedImage 的内容?
我可以使用方法调用临时将代码洒在代码中,以将遇到的各种 BufferedImage 写入磁盘,以便随后可以离线检查它们。它可能有效,但将磁盘上的文件与源代码相匹配会很乏味。
你会怎么做?
【问题讨论】:
-
你为
BufferedImage指定什么类型? -
没有简单的方法来实现这一点,我将从减少渲染层的数量开始,并允许检查每一层。我可能会写一些到磁盘,我什至可以考虑看看
DebugGraphics,for example -
@MadProgrammer 涉及到很多 BufferedImages 但它们都是这样创建的
BufferedImage mBufferedImage = new BufferedImage((int) d.getWidth(), (int) d.getHeight(), BufferedImage.TYPE_INT_ARGB);
标签: java swing debugging netbeans graphics2d