【发布时间】:2019-06-06 13:08:16
【问题描述】:
在 AWT 中,我使用 java.awt.Graphics#drawOval 和 java.awt.Graphics2D#setStroke 绘制边框。对于设置笔划的大小大于椭圆直径的情况,生成的边框与预期的不同。在这种情况下,笔划与圆另一侧的笔划重叠:圆形北笔划与南笔划重叠。 AWT 以 XOR 方式呈现这种重叠,如下图所示。
相反,我希望笔画重叠以 OR 方式绘制,因此在所有情况下 stroke width > circle diameter 的中心都是黑色的。
是否有一种简单的方法可以将行为更改为 OR 重叠模式,即使圆的宽度或高度(然后是椭圆)不相等?
相同的直径(10px)随着笔画宽度的增加:
【问题讨论】:
-
确实出乎意料。我从未注意到这一点,并将结果与
drawRect的结果进行比较,我几乎将其视为一个错误(尽管我认为它不会被归类为错误,因为它几乎不会被忽视)。我玩了一下,但没有找到合理的解决方法。 (最接近的可能是stackoverflow.com/a/35526341/3182664 中的草图,但应该仔细检查这是否是一个明智的解决方案......)
标签: java graphics awt geometry graphics2d