我正在创建一个音乐应用程序,使您可以从指定的颜色中释放自由线,然后轨迹栏将在其上方传递,并应根据曲线检测曲线和颜色以输出声音和修改的音高等。
我正在寻找的是帮助检测线条和曲线。它们在Label中作为BUfferedImage绘制。以下是截图:
我画的黑线代表了轨迹栏,但实际上它是一个由drawRect绘制的矩形,或者它可能是一个图像面板,取决于你检测线条的方式。
我的问题:
答案 0 :(得分:1)
您希望至少存储用户绘图动作的坐标。您可以将这些存储为点或根据您的要求将它们转换为线段和/或曲线的表示。当然,将笔划,颜色和任何您想要的内容存储在此模型中。
要做到这一点,我认为阻力最小的路径可能会让你利用java.awt.Shape
以及java.awt.geom
中的所有内容。具体来说,我认为您希望将每个用户绘制的元素表示为一个或多个Path2D
和/或Area
对象,以响应用户绘制动作。然后,让您的GUI在自定义组件上渲染这些模型。
Path2D会将移动存储为可通过PathIterator访问的线条和曲线。给定由Rectangle2D
表示的轨迹栏,您可以使用可用于比较和组合几何的各种方法 - 即此处的Shape接口intersects(Rectangle2D)
。如果几何模型与轨迹栏相交,则可以遍历路径组件,直到找到相交的实际子段。这可以让你获得当地的斜坡。