gpt4 book ai didi

java - 如何有效地找到 Graphics2D 渲染错误?

转载 作者:搜寻专家 更新时间:2023-11-01 03:22:44 25 4
gpt4 key购买 nike

您能否建议一种从调试器识别渲染错误源的方法?

米斯科·赫弗里 classifies错误分为三类:

  • 逻辑
  • 接线
  • 渲染

我很清楚我的问题是渲染错误。

我有一个带有包含多个层的面板的 Swing 应用程序。渲染所有图层可能会花费大量时间,因此应用程序使用线程池将图层和图层中的图 block 渲染到 BufferedImages 中。当事件调度线程渲染面板时,最近渲染的 BufferedImages 被绘制到屏幕上。

此设置已充分执行。

一项新功能要求某种图层类型支持透明度。某处某处没有保持透明度。错误可能出现在很多地方,可能是在要渲染的对象的实现中,错误可能是在离线渲染线程的实现中。许多 BufferedImages 可能没有在 EDT 渲染代码中正确组合在一起。

我不是要任何人查看代码并告诉我错误在哪里。

我想知道人们发现哪些技术在解决 Graphics2D 渲染问题时特别有效。

我是单元测试的大力支持者,但我更愿意从另一种技术开始。

是否有一种方法或技巧可以从调试器中直观地检查 BufferedImage 或 Graphics2D 对象?

在 Netbeans 变量和监 window 口中 Example Watch window Netbeans 有时使用 PropertyEditors 来显示变量值。在此示例图像中,foregroundColor 和 backgroundColor 的值显示为颜色值的小样本。

是否有一种简单的方法来添加/启用将显示 BufferedImage 内容的 Netbeans PropertyEditor?

我可以暂时在代码中添加方法调用,将遇到的各种 BufferedImage 写入磁盘,以便可以离线检查它们。它可能有效,但将磁盘上的文件与源代码进行匹配会很乏味。

你会怎么做?

最佳答案

您可以将您的方法与所示方法进行比较 here关于清除缓冲区:

g2d.setComposite(AlphaComposite.Clear);
g2d.fillRect(0, 0, w, h);

在最坏的情况下,您可以在可以访问您的image 的点中断并在表达式image.getRGB(0,0) 上设置监视显示设置为十六进制。高位字节是alpha值:FF是不透明的,00..FE代表不同的透明度。

关于java - 如何有效地找到 Graphics2D 渲染错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25372649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com