java - 在位图中定义区域(java)

标签 java bitmap

我有一个JAVA图形应用程序,它由许多不同的形状(直线、圆形、弧线等,通过Graphics.drawLine()、drawArc()...方法绘制)组成。我想在许多(如果不是全部)绘制对象上创建鼠标悬停事件。

我的想法是存储某种带有元数据的位图,并用它来确定鼠标位于哪个对象上。有没有办法在Java中做到这一点? (每次鼠标移动循环遍历所有对象似乎不可行)。

谢谢

约翰

最佳答案

主色解决方案

(移自评论)

  • 创建一个离屏图形缓冲区(如 BufferedImage),大小与主题图像相同。
  • 将所有对象绘制到此缓冲区中。每个对象都有一种自己的颜色。根据对象数量,您可以优化图像缓冲区:例如使用 8 位图形。
  • 按像素读取生成的图像缓冲区(例如 Java - get pixel array from image )。确定当前鼠标位置的像素颜色,并将颜色索引(或 RGB 值)映射到源对象。

优点:

  • 解决方案是“像素精确”:对象边界是精确的 - 像素到像素。
  • 轻松解决重叠对象问题。只需按照所需的顺序绘制它们即可。
  • 对象的复杂性不受限制。理论上位图也是可能的。

缺点:

  • 要移动一个对象,必须重新绘制整个离屏缓冲区
  • 使用低位图像缓冲区时可以限制对象数量

关于java - 在位图中定义区域(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658149/

相关文章:

java - 了解 Arrayadapter 示例

java - 在不打印新行的情况下更新 java 控制台

java - 如何创建新的透明位图?

delphi - 将位图转换为 RTF 后,图像在 ms word 中不显示(但在写字板中显示)

android - Android 开发者控制台中的神秘堆栈跟踪(位图大小超过 32 位)

java - 磁盘上的图像文件大小?

java - 热部署后未知实体 bean 类 : netbeans 6. 9 + glassfish 2.1 + eclipselink jpa 2.0

java - ClassNotFoundException 被神奇地取消选中

java - 表达式预期错误

ios - 从 CGImageRef 获取像素数据包含额外的字节?