【发布时间】:2017-11-04 01:37:03
【问题描述】:
我正在尝试使用 swing 制作绘画程序。我有几种用户可以绘制的形状,包括椭圆、线条和矩形。可以使用各种笔划(线条粗细)绘制(使用 graphics2d)形状,并且可以填充或不填充。
我正在尝试实现一个功能,以便用户可以用鼠标右键单击一个形状并拖动它来移动它。
我目前的策略是轮询形状数组是逆序的(意思是在多个形状的情况下,选择最近添加的一个)。
每个形状实现都有一个名为isSelected(int x, int y) 的方法。我需要弄清楚如何确定一个点是否落在形状上。一个挑战是在内部单击时不应选择椭圆等未填充的形状,但如果已填充则应选择它。此外,选择应该响应笔画的粗细。也就是说,如果线条使用较粗的笔划,则应该通过单击外部区域来选择线条,而不仅仅是线条的确切中心。
我到底该如何实现呢?
【问题讨论】:
-
问题取决于“如何”存储形状。 Java 的图形 2d API 支持
Shape的概念,并带有许多预定义的形状。这些包含确定给定点是否在其范围内的能力 -
我正在存储一个自定义类型的数组,它通过这个 API 实现了一个 2d 形状
标签: java swing graphics paint graphics2d