0

我正在制作一个音乐应用程序,它使您能够从指定的颜色中自由绘制线条,然后轨迹栏会在其顶部传递,并且应该检测曲线和颜色以根据曲线输出声音和修改的音高等。

我正在寻找的是帮助检测线条和曲线。它们以 BUfferedImage 的形式绘制在 Label 中。以下是截图:

绘图/音乐应用的GUI

我画的黑线代表轨迹栏,但实际上它是一个由 drawRect 绘制的矩形,或者它可能是一个图像面板,这取决于你检测线条的方式。

我的问题:

  • 我如何检测黄色、绿色等线条及其曲线并处理该数据?如果我得到这些数据,我可以轻松地修改每种颜色的每个分配声音的增益和音高。谢谢!
4

1 回答 1

1

您至少要存储用户绘图动作的坐标。您可以根据您的要求将它们存储为点或将它们转换为线段和/或曲线的表示。当然,将笔画、颜色和您想要的任何内容存储为该模型的一部分。

为了做到这一点,我认为阻力最小的路径可能会让你利用java.awt.Shape一切java.awt.geom。具体来说,我认为您希望将每个用户绘制的元素表示为一个或多个Path2D和/或Area响应用户绘制动作的对象。然后,让您的 GUI 在您的自定义组件上呈现这些模型。

Path2D 会将运动存储为可通过 PathIterator 访问的直线和曲线。给定一个由 a 表示的轨迹栏Rectangle2D,您可以使用各种可用于比较和组合几何图形的方法——即intersects(Rectangle2D)此处的 Shape 接口。如果几何模型与您的轨迹栏相交,则您可以遍历路径组件,直到找到相交的实际子段。这会让你得到当地的斜坡。

于 2013-02-27T22:23:02.747 回答