⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmlreport.java

📁 信息发布 发布系统 动态的菜单 和 信息统计
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                this.rectReportHeight, "#000000");

        String str = String.valueOf((int) this.valueMax);
        int temp = Integer.parseInt(str.substring(0, 1));
        temp++;
        for (int i = 1; i < str.length(); i++) {
            temp *= 10;
        }
        int count = temp * this.rectRowDistence / this.rectReportHeight;
        // 锟斤拷锟斤拷锟\uFFFD
        for (int i = 0; i < this.rectReportHeight / this.rectRowDistence; i++) {
            int height = this.rectReportHeight - 10 - i * this.rectRowDistence;
            prepareLine(handler, 60, height, width + 50, height, "#6699FF");
            prepareLine(handler, 50, height, 60, height + 10, "#6699FF");
            int y = height - this.rectRowDistence + 10;
            prepareLine(handler, 30, y, 50, y, "#000000");

            int top = height - this.rectRowDistence + 15;
            String value = String.valueOf(count * (i + 1));
            prepareTextbox(handler, top, 0, 45, 18, value, "right");
        }
        for (int i = 0; i < nameArray.length; i++) {
            int left = this.rectReportWidth + this.rectReportDistence * i + 50;
            int top = this.rectReportHeight - (int) valueArray[i]
                    * this.rectRowDistence / count;

            prepareRectExtrusion(handler, top, left, colors[i % colors.length]);

            int t = top - 30;
            int l = left - this.rectReportDistence / 2 + 20;
            String value = String.valueOf(valueArray[i]);
            prepareTextbox(handler, t, l, 100, 18, value, "left");

            t = this.rectReportHeight + 5;
            l = left - this.rectReportDistence / 2 + 20;
            int w = this.rectReportDistence;
            prepareTextbox(handler, t, l, w, 100, nameArray[i], "left");
        }
    }

    public void prepareRectRect(StringBuffer handler, int top, int left,
            int width, int height) {
        handler.append("<v:rect");
        handler.append(" id=\"_x0000_s1026\"");
        prepareAttribute(handler, "id", "_x0000_s1026");
        {
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "-1");
            prepareStyleAttribute(handler, "top", top);
            prepareStyleAttribute(handler, "left", left);
            prepareStyleAttribute(handler, "width", width);
            prepareStyleAttribute(handler, "height", height);
            prepareAttributeEnd(handler);
        }
        prepareAttribute(handler, "fillcolor", "#99ccff");
        prepareAttribute(handler, "stroked", "f");
        handler.append(">\n");
        {
            handler.append("\t<v:fill");
            prepareAttribute(handler, "rotate", "t");
            prepareAttribute(handler, "type", "gradient");
            prepareAttribute(handler, "angle", "150");
            prepareAttribute(handler, "focus", "100%");
            handler.append("/>\n");
        }
        handler.append("</v:rect>\n\n");

    }

    public void prepareRectExtrusion(StringBuffer handler, int top, int left,
            Color color) {
        handler.append("\n<v:rect");
        prepareAttribute(handler, "id", "_x0000_s1025");
        {
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "1");
            prepareStyleAttribute(handler, "top", top);
            prepareStyleAttribute(handler, "left", left);
            prepareStyleAttribute(handler, "width", 30);
            prepareStyleAttribute(handler, "height", rectReportHeight - top);
            prepareAttributeEnd(handler);
        }
        {
            prepareAttributeBegin(handler, "fillcolor");
            prepareRGBString(handler, color);
            prepareAttributeEnd(handler);
        }
        handler.append(">\n");
        {
            handler.append("\t<v:fill");
            prepareAttribute(handler, "rotate", "t");
            prepareAttribute(handler, "type", "gradient");
            {
                prepareAttributeBegin(handler, "color2");
                prepareToWhite(handler, color);
                prepareAttributeEnd(handler);
            }
            handler.append("/>\n");
        }
        {
            handler.append("\t<o:extrusion");
            prepareAttribute(handler, "v:ext", "view");
            prepareAttribute(handler, "on", "t");
            prepareAttribute(handler, "backdepth", "25px");
            {
                prepareAttributeBegin(handler, "color");
                prepareToBlack(handler, color);
                prepareAttributeEnd(handler);
            }
            handler.append("/>\n");
        }
        handler.append("</v:rect>\n");

    }

    public void prepareVMLReportOval(StringBuffer handler) {
        for (int i = 0, baseAngle = 0, tempAngle = 0; i < nameArray.length; i++, baseAngle += tempAngle) {
            if (i == nameArray.length - 1) {
                tempAngle = OVAL_ROUND_ANGLE * 10000 - baseAngle;
            } else {
                tempAngle = (int) (valueArray[i] * (OVAL_ROUND_ANGLE) / valueSum) * 10000;
            }
            Color color = colors[i % colors.length];
            prepareOvalShape(handler, baseAngle, tempAngle, color);
            double angle = (((baseAngle + tempAngle / 2) / 10000) * 2 * Math.PI)
                    / OVAL_ROUND_ANGLE;
            double x = this.ovalReportSize * Math.cos(angle) * 3 / 8;
            double y = this.ovalReportSize * Math.sin(angle) * 3 / 8;

            boolean leftSit = angle >= Math.PI / 2 && angle < Math.PI * 3 / 2;
            prepareOvalPolyLine(handler, baseAngle, tempAngle, leftSit, x, y);

            int top = (int) (this.ovalReportSize / 2 - y * 2 - 18)
                    + ovalReportTop;
            int left = (int) (this.ovalReportSize / 2 + x * 2) + ovalReportLeft;
            if (leftSit) {
                left -= 100;
            }
            prepareTextbox(handler, top, left, 150, 18, nameArray[i], "left");
            prepareTextbox(handler, top + 20, left, 150, 18, String
                    .valueOf(valueArray[i]), "left");
        }
    }

    private void prepareOvalShape(StringBuffer handler, int baseAngle,
            int tempAngle, Color color) {
        handler.append("<v:shape");
        prepareAttribute(handler, "id", "_x0000_s1025");
        {// style
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "-1");
            prepareStyleAttribute(handler, "top", ovalReportTop);
            prepareStyleAttribute(handler, "left", ovalReportLeft);
            prepareStyleAttribute(handler, "width", this.ovalReportSize);
            prepareStyleAttribute(handler, "height", this.ovalReportSize);
            prepareAttributeEnd(handler);
        }
        prepareAttribute(handler, "coordsize", "1500,1400");
        prepareAttribute(handler, "o:spt", "100");
        {// fillcolor
            prepareAttributeBegin(handler, "fillcolor");
            prepareRGBString(handler, color);
            prepareAttributeEnd(handler);
        }
        prepareAttribute(handler, "strokecolor", "white");
        {// path
            prepareAttributeBegin(handler, "path");
            handler.append(" m750,700 ae750,700,750,700,");
            handler.append(baseAngle);
            handler.append(",");
            handler.append(tempAngle);
            handler.append(" x e");
            prepareAttributeEnd(handler);
        }
        prepareAttribute(handler, "adj", "0,,0");
        handler.append(">\n");
        {
            handler.append("\t<v:fill");
            prepareAttribute(handler, "rotate", "t");
            prepareAttribute(handler, "type", "gradient");
            {
                prepareAttributeBegin(handler, "color2");
                prepareToWhite(handler, color);
                prepareAttributeEnd(handler);
            }
            prepareAttribute(handler, "focus", "100%");
            handler.append("/>\n");
        }
        {
            handler.append("\t<v:stroke");
            handler.append(" joinstyle = \"round\"");
            handler.append("/>\n");
        }
        {
            handler.append("\t<v:formulas/>\n");
        }
        {
            handler.append("\t<v:path");
            handler.append(" o:connecttype = \"segments\"");
            handler.append("/>\n");
        }
        handler.append("</v:shape>\n");
    }

    private void prepareOvalPolyLine(StringBuffer handler, int baseAngle,
            int tempAngle, boolean leftSit, double x, double y) {
        handler.append("<v:PolyLine");
        prepareAttribute(handler, "filled", "false");
        {
            double len = this.ovalReportSize / 2;

            prepareAttributeBegin(handler, "Points");
            preparePoint(handler, (len + x) + ovalReportLeft, (len - y)
                    + ovalReportTop);
            x = len + x * 2 + ovalReportLeft;
            y = len - y * 2 + ovalReportTop;
            preparePoint(handler, x, y);
            preparePoint(handler, leftSit ? x - 100 : x + 100, y);
            prepareAttributeEnd(handler);
        }
        {
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "1");
            prepareAttributeEnd(handler);
        }
        handler.append(">\n");
        handler.append("\t<v:stroke");
        prepareAttribute(handler, "StartArrow", "Oval");
        handler.append("/>\n");
        handler.append("</v:PolyLine>\n");
    }

    // /////////////////////////////////// public in this class
    public void prepareLine(StringBuffer handler, int xFrom, int yFrom,
            int xTo, int yTo, String color) {
        handler.append("<v:line");
        prepareAttribute(handler, "id", "_x0000_s1027");
        {
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "-1");
            prepareStyleAttribute(handler, "top", 0);
            prepareStyleAttribute(handler, "left", 0);
            prepareStyleAttribute(handler, "text-align", "left");
            prepareStyleAttribute(handler, "flip", "y");
            prepareAttributeEnd(handler);
        }
        {
            prepareAttributeBegin(handler, "from");
            preparePoint(handler, xFrom, yFrom);
            prepareAttributeEnd(handler);
        }
        {
            prepareAttributeBegin(handler, "to");
            preparePoint(handler, xTo, yTo);
            prepareAttributeEnd(handler);
        }
        prepareAttribute(handler, "strokecolor", color);
        handler.append("/>\n");
    }

    private void prepareTextbox(StringBuffer handler, int top, int left,
            int width, int height, String value, String align) {
        handler.append("<v:shape");
        prepareAttribute(handler, "id", "_x0000_s1025");
        {
            prepareAttributeBegin(handler, "style");
            prepareStyleAttribute(handler, "position", "absolute");
            prepareStyleAttribute(handler, "z-index", "2");
            prepareStyleAttribute(handler, "top", top);
            prepareStyleAttribute(handler, "left", left);
            prepareStyleAttribute(handler, "width", width);
            prepareStyleAttribute(handler, "height", height);
            prepareAttributeEnd(handler);
        }
        handler.append(">\n");
        {
            handler.append("\t<v:textbox");
            {
                prepareAttributeBegin(handler, "style");
                prepareStyleAttribute(handler, "font-size", "12px");
                prepareStyleAttribute(handler, "text-align", align);
                prepareAttributeEnd(handler);
            }
            prepareAttribute(handler, "inset", "0,0,0,0");
            handler.append(">");
            handler.append(value);
            handler.append("</v:textbox>\n");
        }
        handler.append("</v:shape>\n");
    }

    private void prepareAttribute(StringBuffer handler, String attribure,
            String value) {
        if (value == null || value.equals("")) {
            return;
        }
        prepareAttributeBegin(handler, attribure);
        handler.append(value);
        prepareAttributeEnd(handler);
    }

    private void prepareAttributeBegin(StringBuffer handler, String attribure) {
        handler.append(" ");
        handler.append(attribure);
        handler.append("=\"");
    }

    private void prepareStyleAttribute(StringBuffer handler, String attribure,
            String value) {
        if (value == null || value.equals("")) {
            return;
        }
        handler.append(attribure);
        handler.append(": ");
        handler.append(value);
        handler.append("; ");
    }

    private void prepareStyleAttribute(StringBuffer handler, String attribure,
            double value) {
        handler.append(attribure);
        handler.append(": ");
        handler.append(value);
        handler.append("px; ");
    }

    private void preparePoint(StringBuffer handler, double x, double y) {
        handler.append((int) x);
        handler.append("px, ");
        handler.append((int) y);
        handler.append("px ");
    }

    private void prepareAttributeEnd(StringBuffer handler) {
        handler.append("\"");
    }

    private void prepareRGBString(StringBuffer handler, Color color) {
        handler.append("rgb(");
        handler.append(color.getRed());
        handler.append(", ");
        handler.append(color.getGreen());
        handler.append(", ");
        handler.append(color.getBlue());
        handler.append(")");
    }

    private void prepareToWhite(StringBuffer handler, Color color) {
        int r = (255 + color.getRed()) / 2;
        int g = (255 + color.getGreen()) / 2;
        int b = (255 + color.getBlue()) / 2;
        handler.append("rgb(");
        handler.append(r);
        handler.append(", ");
        handler.append(g);
        handler.append(", ");
        handler.append(b);
        handler.append(")");
    }

    private void prepareToBlack(StringBuffer handler, Color color) {
        int r = (0 + color.getRed()) * 3 / 4;
        int g = (0 + color.getGreen()) * 3 / 4;
        int b = (0 + color.getBlue()) * 3 / 4;
        handler.append("rgb(");
        handler.append(r);
        handler.append(", ");
        handler.append(g);
        handler.append(", ");
        handler.append(b);
        handler.append(")");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -