java - Swing 绘制程序 - 如何处理选择?

标签 java swing graphics paint graphics2d

我正在尝试使用 swing 制作一个绘画程序。我有几种用户可以绘制的形状,包括椭圆形、直线和矩形。可以使用各种笔划(线条粗细)绘制形状(使用graphics2d),并且可以填充或不填充。

我正在尝试实现一项功能,以便用户可以用鼠标右键单击形状并拖动它来移动它。

我当前的策略是以相反顺序轮询形状数组(这意味着如果有多个形状,则选择最近添加的一个)。

每个形状实现都有一个名为 isSelected(int x, int y) 的方法。我需要弄清楚如何确定一个点是否落在形状上。一项挑战是,在内部单击时不应选择未填充的形状(例如椭圆形),但如果已填充,则应选择该形状。此外,选择应响应笔画的粗细。也就是说,如果一条线使用较粗的笔画,则应该可以通过单击外部区域来选择该线,而不仅仅是该线的中心。

我到底该如何实现这个?

最佳答案

I am storing an array of a custom type which implements a 2d shape from this API

然后你可以使用:

取决于您拥有的信息以及您想要检查的内容

关于java - Swing 绘制程序 - 如何处理选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106533/

相关文章:

java - 如何使用堆栈跟踪查找线程启动方法的调用类名

java - Java Graphics2D 是否有最大字体大小?

c - X 窗口 id 0 是什么意思 - 未创建窗口?

java - Spring/Tomcat 中的动态类加载

java - 对于中等大小的文件,尽可能快地将 XML 转换为 CSV

Java 输入对话框工具提示和粘贴选项?

java - 将一个组件右对齐,将其他几个组件对齐到死点

Java JFrame - 按键似乎没有注册

java - 什么是 Java 中的短 if 语句?

Java SQL : Statement. hasResultSet()?