gpt4 book ai didi

java - 在java绘图应用程序中检测Graphics2d手绘的直线及其曲线

转载 作者:行者123 更新时间:2023-12-01 14:48:37 27 4
gpt4 key购买 nike

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

我正在寻找的是检测直线和曲线的帮助。它们在标签中绘制为 BUfferedImage。以下为截图:

GUI Of drawing/music aplication

我绘制的黑线代表轨迹栏,但实际上它可能是由drawRect绘制的矩形,也可能是图像面板,具体取决于您检测线条的方式。

我的问题:

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

最佳答案

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

为了实现这一目标,我认为阻力最小的途径可能是使用 java.awt.Shape 以及 java.awt.geom 中的所有内容。具体来说,我认为您希望将每个用户绘制的元素表示为一个或多个 Path2D 和/或 Area 对象,以响应用户绘制 Action 。然后,让 GUI 在自定义组件上渲染这些模型。

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

关于java - 在java绘图应用程序中检测Graphics2d手绘的直线及其曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122676/

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