Чтобы убедиться, что SVG идет с ним, он не просто отключается - PullRequest
0 голосов
/ 25 ноября 2018

Вот как я должен был это сделать, если высота или ширина больше, чем указано в моем SetAttribute.Затем вы должны выбрать высоту или ширину, в соответствии с которыми одно из них соответствует значению, которое, например, в моем списке имеет высота, и убедиться, что оно немного больше этого значения.

List<Rectangle> rectangles = new ArrayList<Rectangle>();
    rectangles.add(new Rectangle(0, 0, 170, 180, "7FFF00"));
    rectangles.add(new Rectangle(15, 120, 825, 140, "D2691E"));

    //Here are width and height to SVG file.
    request.setAttribute("svg", Drawing.drawSvg(rectangles, 200, 250));

Вот как это выглядиткак в html-файле.

<svg viewBox="0 0 200 500" width="200" height="500">

Здесь я создаю SVG-файл (Drawing.java)

private static StringBuilder drawRectangles(List<Rectangle> rectangles)
{
    StringBuilder stringBuilder = new StringBuilder();
    for(Rectangle rectangle:rectangles)
        stringBuilder.append(rectangle.toSvg());

    return stringBuilder;
}

private static String initializeSvg(int width, int height) // viewport
{
    String svg = "<svg viewBox=\"0 0 $1 $2\" width=\"$1\" height=\"$2\">$body</svg>";
    svg = svg.replace("$1", String.valueOf(width));
    svg = svg.replace("$2", String.valueOf(height));       
    return svg;
}

public static String drawSvg(List<Rectangle> rectangles, int svgWidth, int svgHeight)
{
    //rectangles must check if it has a value greater than svgWidth & svgHeight.
    //HERE

    // Initialiser <svg> element.
    String svg = initializeSvg(svgWidth, svgHeight);
    // Saml <rect>'s for alle Rectangle objekter i samlingen.
    StringBuilder stringBuilder = drawRectangles(rectangles);
    // Returner <svg> med <rect>'s
    return svg.replace("$body", stringBuilder.toString());
}

Rectangle.java file.

public String toSvg()
    {
        String rect = "<rect x=\"$1\" y=\"$2\" width=\"$3\" height=\"$4\" style=\"fill:none;stroke:#$5;stroke-width:5;\">";
        rect = rect.replace("$1", String.valueOf(this.x));
        rect = rect.replace("$2", String.valueOf(this.y));
        rect = rect.replace("$3", String.valueOf(this.width));
        rect = rect.replace("$4", String.valueOf(this.height));
        rect = rect.replace("$5", String.valueOf(this.color));
        rect += "</rect>";
        return rect;
    }

В основном,Избегание этих вещей может произойти, поэтому содержимое отображается не полностью.

enter image description here

Код из SVG:

<svg viewBox="0 0 200 500" width="200" height="500">
<rect x="0" y="0" width="210" height="170" style="fill:none;stroke:#7FFF00;stroke-width:5;"></rect>
<rect x="15" y="120" width="140" height="125" style="fill:none;stroke:#D2691E;stroke-width:5;"></rect>
</svg>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...