Рассчитать внешнюю линию по закругленному прямоугольнику - PullRequest
1 голос
/ 17 сентября 2010

Я рисую прямоугольник со скругленными углами со специальным штрихом, а затем пытаюсь нарисовать одну линию вокруг этого прямоугольника.Но по краям он никогда не совпадает друг с другом.

    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) );

У кого-нибудь есть лучший?

1 Ответ

0 голосов
/ 17 сентября 2010

Я не думаю, что есть простой способ. (Даже если вы реализуете свою собственную процедуру рисования скругленных прямоугольников.)

Я бы предложил вам сначала нарисовать немного более толстую внешнюю границу, а затем нарисовать внутреннюю "границу".

...