java - 通过圆角矩形计算外线

标签 java graphics awt

我用指定的笔划绘制一个圆角矩形,然后尝试绘制一条线 围绕这个矩形。但在边缘,它们从来没有真正匹配。

    g.setStroke(new BasicStroke(radius + .5f));
    g.drawRoundRect(x + radius/2, y + radius/2, width - radius, height - radius, radius, radius);

    // Outer border
    g.setColor(outer);
    g.setStroke(new BasicStroke(1));
    g.drawRoundRect(x, y, width - 1, height - 1, radius, radius);

你知道如何计算外边框半径吗?

好吧,我尝试了一点,得到了一个更好的,但仍然不完美;

    float scale = radius / 2.0f;
    g.setPaint( p );
    g.setStroke(new BasicStroke(2 * scale ));
    g.drawRoundRect(x + radius/2, y + radius/2, width - radius, height - radius, radius, radius);

    // Outer border
    g.setColor(outer);
    g.setStroke(new BasicStroke(1));
    g.drawRoundRect(x, y, width - 1, height - 1, Math.round(4*scale), Math.round(4*scale) );

有人有更好的吗?

最佳答案

我认为没有简单的方法。 (即使您实现自己的圆角矩形绘图例程也不会。)

我建议你先画一个稍厚的外边框,然后在其上画内“边框”。

关于java - 通过圆角矩形计算外线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730470/

相关文章:

java - 最小积生成树

algorithm - 如何绕任意轴旋转?

java - 如何处理 JTabbedPane 中选项卡标题的高度

c++ - 如何在 openGL 中模拟蟋蟀树桩

JAVA图形用户界面 : Can someone help me check why my button doesn't respond to it being clicked?

java - 我无法在主类中获取 JPanel 的背景颜色

Java、String.matches区别

java - JSR-303 和 Validatable 验证的顺序

java - SBT 包装显示出意外的行为

java - 使用 Midi Sequencer 时返回错误代码