Example #1
0
        /// <summary>
        /// 通过函数获得结果的坐标点
        /// </summary>
        /// <param name="x"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private Vector3 GetResult(float x, FunctionType type)
        {
            switch (type)
            {
            case FunctionType.SinFun:
                return(CacheUnit.SetVector(x, Mathf.Sin(x * Mathf.Deg2Rad) * 100) * BaseUnit);

            case FunctionType.CosFun:
                return(CacheUnit.SetVector(x, Mathf.Cos(x * Mathf.Deg2Rad) * 100) * BaseUnit);

            case FunctionType.LinearFun:
                //y=(-Ax-C)/B
                return(CacheUnit.SetVector(x, (-linearFun.A * x - linearFun.C) / linearFun.B) * BaseUnit);

            case FunctionType.InverseFun:
                return(CacheUnit.SetVector(x, inverseFun.K / x) * BaseUnit);

            case FunctionType.CustomFun:
                //exp = new Expression();
                exp.SetFormula(customFun.formula);

                return(CacheUnit.SetVector(x, exp.GetReslut(x)) * BaseUnit);

            default:
                return(default(Vector3));
            }
        }
Example #2
0
        /// <summary>
        /// 获得需要绘制的四边形属性
        /// </summary>
        /// <param name="startPos"></param>
        /// <param name="endPos"></param>
        /// <param name="color0"></param>
        /// <param name="lineWidth"></param>
        /// <returns></returns>
        private DrawAttribute GetQuad(Vector3 startPos, Vector3 endPos, Color color0, float lineWidth = 2.0f)
        {
            var dis = Vector2.Distance(startPos, endPos);

            if (dis == 0)
            {
                dis = 0.001f;
            }
            var y = lineWidth * 0.5f * (endPos.x - startPos.x) / dis;
            var x = lineWidth * 0.5f * (endPos.y - startPos.y) / dis;

            if (y <= 0)
            {
                y = -y;
            }
            else
            {
                x = -x;
            }

            drawAttribute.SetPosition(
                CacheUnit.SetVector(startPos.x + x, startPos.y + y),
                CacheUnit.SetVector(endPos.x + x, endPos.y + y),
                CacheUnit.SetVector(endPos.x - x, endPos.y - y),
                CacheUnit.SetVector(startPos.x - x, startPos.y - y)
                );
            drawAttribute.SetColor(color0, color0, color0, color0);
            return(drawAttribute);
        }
Example #3
0
        private void ModifyVertices(VertexHelper vh)
        {
            tempVertexTriangleStream.Clear();
            vh.GetUIVertexStream(tempVertexTriangleStream);
            vh.Clear();

            float[] result = ChartUntils.GetKeyArrayMaxxAndMaxy(keyPos);
            float   maxx = result[0], maxy = result[1];

            for (int i = 0; i < keyPos.Count - 1; i++)
            {
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(keyPos[i].x, keyPos[i].y),
                    CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y),
                    CacheUnit.SetVector(keyPos[i + 1].x, 0),
                    CacheUnit.SetVector(keyPos[i].x, 0));
                drawAttribute.SetColor(//平滑插值颜色
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, keyPos[i].y / height)),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, keyPos[i + 1].y / height)),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, 0 / height)),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, Color.Lerp(buttomBorderColor, upBorderColor, 0 / height))
                    );
                drawAttribute.SetUV(
                    CacheUnit.SetVector(keyPos[i].x / maxx, keyPos[i].y / maxy),
                    CacheUnit.SetVector(keyPos[i + 1].x / maxx, keyPos[i + 1].y / maxy),
                    CacheUnit.SetVector(keyPos[i + 1].x / maxx, 0),
                    CacheUnit.SetVector(keyPos[i].x / maxx, 0)
                    );
                DrawSimpleQuad(vh, drawAttribute);
            }
        }
Example #4
0
        private void ModifyVertices(VertexHelper vh)
        {
            vh.Clear();
            float delta = 0;
            int   count = ColorList.Count;

            if (isShowBorder)
            {
                DrawSimpleRectBorder(vh,
                                     CacheUnit.SetVector(centerX, centerY),
                                     CacheUnit.SetVector(centerX, centerY + height),
                                     CacheUnit.SetVector(centerX + width, centerY + height),
                                     CacheUnit.SetVector(centerX + width, centerY)
                                     );
            }

            for (int i = 0; i < count - 1; i++)
            {
                if (DirType == ChartDirType.Horizontal)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(centerX + delta, centerY),
                        CacheUnit.SetVector(centerX + delta, centerY + height),
                        CacheUnit.SetVector(centerX + delta + (width) / (float)(count - 1), centerY + height),
                        CacheUnit.SetVector(centerX + delta + (width) / (float)(count - 1), centerY)
                        );
                    drawAttribute.SetColor(m_colorList[i], m_colorList[i], m_colorList[i + 1], m_colorList[i + 1]);
                    DrawSimpleQuad(vh, drawAttribute);

                    delta += (width) / (float)(count - 1);
                }
                else
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(centerX, centerY + delta),
                        CacheUnit.SetVector(centerX, centerY + delta + (height) / (float)(count - 1)),
                        CacheUnit.SetVector(centerX + width, centerY + delta + (height) / (float)(count - 1)),
                        CacheUnit.SetVector(centerX + width, centerY + delta)
                        );
                    drawAttribute.SetColor(m_colorList[i], m_colorList[i + 1], m_colorList[i + 1], m_colorList[i]);
                    DrawSimpleQuad(vh, drawAttribute);

                    delta += (height) / (float)(count - 1);
                }
            }
        }
Example #5
0
        private void ModifyVertices(VertexHelper vh)
        {
            vh.Clear();

            float i      = 0;
            float ratioX = (Kx - InnerRaio * Kx);
            float ratioY = (Ky - InnerRaio * Ky);

            for (int j = 0; j < pieInfoList.Count; j++)
            {
                float value = pieInfoList[j].value;

                float delta = value * 0.05f;//节约mesh资源,,,数值越大越节省,同时效果也越差.简易数值最好为整数,否则效果出错

                if (value < 5)
                {
                    delta = 1;
                }

                float count = 0;

                float   preRadian        = i;
                float   nextRadian       = i + 0.0628f * delta * (value / delta);
                Vector3 preV             = new Vector3(Mathf.Cos(preRadian), Mathf.Sin(preRadian));
                Vector3 nextV            = new Vector3(Mathf.Cos(nextRadian), Mathf.Sin(nextRadian));
                Vector3 separationVector = (preV + nextV).normalized * 0.5f;

                while (count < value)
                {
                    float cos = Mathf.Cos(i), sin = Mathf.Sin(i);
                    float nextCos = Mathf.Cos(i + 0.0628f * delta), nextSin = Mathf.Sin(i + 0.0628f * delta);

                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(nextCos * ratioX, nextSin * ratioY) + separationVector * separationDegree,
                        CacheUnit.SetVector(nextCos * (Kx), nextSin * (Ky)) + separationVector * separationDegree,
                        CacheUnit.SetVector(cos * (Kx), sin * (Ky)) + separationVector * separationDegree,
                        CacheUnit.SetVector(cos * ratioX, sin * ratioY) + separationVector * separationDegree);
                    drawAttribute.SetColor(
                        pieInfoList[j].color, pieInfoList[j].color, pieInfoList[j].color, pieInfoList[j].color);
                    DrawSimpleQuad(vh, drawAttribute);

                    i     += 0.0628f * delta;
                    count += delta;
                }
            }
        }
Example #6
0
        void DrawCosFunChart(VertexHelper vh, FunctionType type)
        {
            float startX = -width / 2.0f;

            var startPos = SetCullingArea(ref startX, type) * cosFun.A;

            for (var x = startX; x < width / 2.0f; x += m_lineSmooth)
            {
                var endPos = GetResult(x, type) * cosFun.A;
                if (GetCullingArea(endPos))
                {
                    continue;
                }

                DrawSimpleQuad(vh, GetQuad(startPos + CacheUnit.SetVector(0, cosFun.B), endPos + CacheUnit.SetVector(0, cosFun.B), m_lineColor, m_lineWidth));
                startPos = endPos;
            }
        }
Example #7
0
        /*
         * v2-------v3
         * |         |
         * |         |
         * v1-------v4
         */
        protected void DrawSimpleRectBorder(VertexHelper vh, Vector2 v1, Vector2 v2, Vector2 v3, Vector2 v4)
        {
            //draw up border
            drawAttribute.SetPosition(
                CacheUnit.SetVector(v2.x, v2.y + borderWidth),
                CacheUnit.SetVector(v3.x, v3.y + borderWidth),
                CacheUnit.SetVector(v3.x, v3.y),
                CacheUnit.SetVector(v2.x, v2.y)
                );
            drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor);
            DrawSimpleQuad(vh, drawAttribute);

            //draw right border
            drawAttribute.SetPosition(
                CacheUnit.SetVector(v3.x + borderWidth, v3.y + borderWidth),
                CacheUnit.SetVector(v4.x + borderWidth, v4.y - borderWidth),
                CacheUnit.SetVector(v4.x, v4.y - borderWidth),
                CacheUnit.SetVector(v3.x, v3.y + borderWidth)
                );
            drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor);
            DrawSimpleQuad(vh, drawAttribute);

            //draw buttom border
            drawAttribute.SetPosition(
                CacheUnit.SetVector(v1.x, v1.y - borderWidth),
                CacheUnit.SetVector(v4.x, v4.y - borderWidth),
                CacheUnit.SetVector(v4.x, v4.y),
                CacheUnit.SetVector(v1.x, v1.y)
                );
            drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor);
            DrawSimpleQuad(vh, drawAttribute);

            //draw left border
            drawAttribute.SetPosition(
                CacheUnit.SetVector(v2.x - borderWidth, v2.y + borderWidth),
                CacheUnit.SetVector(v1.x - borderWidth, v1.y - borderWidth),
                CacheUnit.SetVector(v1.x, v1.y - borderWidth),
                CacheUnit.SetVector(v2.x, v2.y + borderWidth)
                );
            drawAttribute.SetColor(borderColor, borderColor, borderColor, borderColor);
            DrawSimpleQuad(vh, drawAttribute);
        }
        private void ModifyVertices(VertexHelper vh)
        {
            vh.Clear();

            if (IsShowXAxis)
            {
                //draw x
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(0 + centerX, -LineWidth),
                    CacheUnit.SetVector(0 + centerX, 0),
                    CacheUnit.SetVector(width + centerX, 0),
                    CacheUnit.SetVector(width + centerX, -LineWidth));
                drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                DrawSimpleQuad(vh, drawAttribute);
            }

            if (IsShowArrow)
            {
                //draw x arrow
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(width + centerX, LineWidth + ArrowSize - LineWidth / 2f),
                    CacheUnit.SetVector(width + centerX + 2 * ArrowSize, -LineWidth / 2f),
                    CacheUnit.SetVector(width + centerX + 2 * ArrowSize, -LineWidth / 2f),
                    CacheUnit.SetVector(width + centerX, -LineWidth - ArrowSize - LineWidth / 2f));
                drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                DrawSimpleQuad(vh, drawAttribute);

                //draw y arrow
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(-ArrowSize - LineWidth / 2 - LineWidth, height + centerY),
                    CacheUnit.SetVector(-LineWidth / 2, height + centerY + ArrowSize * 2),
                    CacheUnit.SetVector(-LineWidth / 2, height + centerY + ArrowSize * 2),
                    CacheUnit.SetVector(ArrowSize + LineWidth / 2, height + centerY));
                drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                DrawSimpleQuad(vh, drawAttribute);
            }

            if (IsShowYAxis)
            {
                //draw y axis
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(-LineWidth, -LineWidth + centerY),
                    CacheUnit.SetVector(-LineWidth, height + centerY),
                    CacheUnit.SetVector(0, height + centerY),
                    CacheUnit.SetVector(0, -LineWidth + centerY));
                drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                DrawSimpleQuad(vh, drawAttribute);
            }

            if (IsShowScale)
            {
                //draw x sacle
                for (int i = BaseUnit; i <= xLength; i += BaseUnit)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(i - LineWidth / 2f, 0),
                        CacheUnit.SetVector(i - LineWidth / 2f, 10),
                        CacheUnit.SetVector(i + LineWidth / 2f, 10),
                        CacheUnit.SetVector(i + LineWidth / 2f, 0));
                    drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                    DrawSimpleQuad(vh, drawAttribute);
                }
                //draw y scale
                for (int i = BaseUnit; i < yLength; i += BaseUnit)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(0, i + LineWidth / 2f),
                        CacheUnit.SetVector(10, i + LineWidth / 2f),
                        CacheUnit.SetVector(10, i - LineWidth / 2f),
                        CacheUnit.SetVector(0, i - LineWidth / 2f));
                    drawAttribute.SetColor(AxisColor, AxisColor, AxisColor, AxisColor);
                    DrawSimpleQuad(vh, drawAttribute);
                }
            }

            //draw grid
            if (IsShowYGrid)
            {
                //draw x grid
                for (int i = BaseUnit; i < yLength - centerY; i += BaseUnit)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(0 + centerX, i + LineWidth / 2f + centerY),
                        CacheUnit.SetVector(width + centerX, i + LineWidth / 2f + centerY),
                        CacheUnit.SetVector(width + centerX, i - LineWidth / 2f + centerY),
                        CacheUnit.SetVector(0 + centerX, i - LineWidth / 2f + centerY));
                    drawAttribute.SetColor(GridColor, GridColor, GridColor, GridColor);
                    DrawSimpleQuad(vh, drawAttribute);
                }
            }
            if (IsShowXGrid)
            {
                //draw y grid
                for (int i = BaseUnit; i <= xLength - centerX; i += BaseUnit)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(i - LineWidth / 2f + centerX, 0 + centerY),
                        CacheUnit.SetVector(i - LineWidth / 2f + centerX, height + centerY),
                        CacheUnit.SetVector(i + LineWidth / 2f + centerX, height + centerY),
                        CacheUnit.SetVector(i + LineWidth / 2f + centerX, 0 + centerY));
                    drawAttribute.SetColor(GridColor, GridColor, GridColor, GridColor);
                    DrawSimpleQuad(vh, drawAttribute);
                }
            }
        }
Example #9
0
        private void ModifyVertices(VertexHelper vh)
        {
            vh.Clear();

            float angle = 360f / parametersCount;

            //判断是否需要缓存
            if (tmpCount != parametersCount)
            {
                CacheUnit.CacheItemAsAngle(parametersCount, angle);
            }
            tmpCount = parametersCount;


            float innerX = (Kx - LineCurde * Kx), innerY = (Ky - LineCurde * Ky);
            float outerX = Kx, outerY = Ky;

            for (int z = 0; z < circleCount; z++)
            {
                float delta = lineDleta * z;
                for (int j = 0; j < parametersCount; j++)
                {
                    //设置颜色模式
                    int sequence = -1;
                    if (colorMode == ColorMode.Single)
                    {
                        sequence = z;
                    }
                    else
                    {
                        sequence = j;
                    }

                    float cos     = CacheUnit.cacheCosList[j];
                    float sin     = CacheUnit.cacheSinList[j];
                    float nextCos = CacheUnit.cacheCosList[j + 1];
                    float nextSin = CacheUnit.cacheSinList[j + 1];


                    //上边    顺序:左下角  左上角    右上角   右下角
                    drawAttribute.SetPosition(CacheUnit.SetVector(nextCos * (innerX - delta), nextSin * (innerY - delta)), CacheUnit.SetVector(nextCos * (outerX - delta), nextSin * (outerY - delta)),
                                              CacheUnit.SetVector(cos * (outerX - delta), sin * (outerY - delta)), CacheUnit.SetVector(cos * (innerX - delta), sin * (innerY - delta)));
                    drawAttribute.SetColor(bgInfoList[sequence].upBorderColor, bgInfoList[sequence].buttomBorderColor,
                                           bgInfoList[sequence].buttomBorderColor, bgInfoList[sequence].upBorderColor);
                    DrawSimpleQuad(vh, drawAttribute);
                }
            }

            //绘制辅助线
            for (int j = 0; j < parametersCount; j++)
            {
                float cos = CacheUnit.cacheCosList[j];
                float sin = CacheUnit.cacheSinList[j];

                float K = (sin * (Ky)) / (cos * (outerX));//计算斜率,增加线条宽度

                K = Mathf.Abs(K);

                if (K > 500f)//看做无限大  垂直
                {
                    drawAttribute.SetPosition(CacheUnit.SetVector(-guideLineWidth, guideLineWidth), CacheUnit.SetVector(cos * (outerX) - guideLineWidth, sin * (Ky) + guideLineWidth),
                                              CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (outerY) - guideLineWidth), CacheUnit.SetVector(guideLineWidth, -guideLineWidth));
                    drawAttribute.SetColor(lineColor, lineColor, lineColor, lineColor);
                    DrawSimpleQuad(vh, drawAttribute);
                    continue;
                }
                drawAttribute.SetPosition(CacheUnit.SetVector(-guideLineWidth, guideLineWidth + K), CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (Ky) + guideLineWidth + K),
                                          CacheUnit.SetVector(cos * (outerX) + guideLineWidth, sin * (outerY) - guideLineWidth - K), CacheUnit.SetVector(-guideLineWidth, -guideLineWidth - K));
                drawAttribute.SetColor(lineColor, lineColor, lineColor, lineColor);
                DrawSimpleQuad(vh, drawAttribute);
            }
        }
Example #10
0
        private void ModifyVertices(VertexHelper vh)
        {
            vh.Clear();
            float groupDelta = 0;
            Color tmpColor   = new Color();

            for (int i = 0; i < BarInfoList.Count; i++)
            {
                float itemDelta = 0;

                for (int j = 0; j < BarInfoList[i].groupCount; j++)
                {
                    PieInfo tmpInfo = BarInfoList[i].attributeInfoList[j];
                    if (BarColorMode == ColorMode.Single)
                    {
                        tmpColor = BarInfoList[i].attributeInfoList[0].color;
                    }
                    else if (BarColorMode == ColorMode.Sector)
                    {
                        tmpColor = tmpInfo.color;
                    }

                    if (m_chartRandererType == ChartRandererType.BarGroup)
                    {
                        if (barDirType == ChartDirType.Horizontal)
                        {
                            if (isShowBorder)
                            {
                                DrawSimpleRectBorder(vh,
                                                     CacheUnit.SetVector(groupDelta + itemDelta + centerX, 0 + centerY),
                                                     CacheUnit.SetVector(groupDelta + itemDelta + centerX, tmpInfo.value + centerY),
                                                     CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, tmpInfo.value + centerY),
                                                     CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, 0 + centerY)
                                                     );
                            }
                            drawAttribute.SetPosition(
                                CacheUnit.SetVector(groupDelta + itemDelta + centerX, 0 + centerY),
                                CacheUnit.SetVector(groupDelta + itemDelta + centerX, tmpInfo.value + centerY),
                                CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, tmpInfo.value + centerY),
                                CacheUnit.SetVector(groupDelta + itemDelta + BarWidth + centerX, 0 + centerY)
                                );
                        }
                        else if (barDirType == ChartDirType.Vertical)
                        {
                            if (isShowBorder)
                            {
                                DrawSimpleRectBorder(vh,
                                                     CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + centerY),
                                                     CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + BarWidth + centerY),
                                                     CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + BarWidth + centerY),
                                                     CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + centerY)
                                                     );
                            }
                            drawAttribute.SetPosition(
                                CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + centerY),
                                CacheUnit.SetVector(0 + centerX, groupDelta + itemDelta + BarWidth + centerY),
                                CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + BarWidth + centerY),
                                CacheUnit.SetVector(tmpInfo.value + centerX, groupDelta + itemDelta + centerY)
                                );
                        }
                        drawAttribute.SetColor(tmpColor, tmpColor, tmpColor, tmpColor);
                        DrawSimpleQuad(vh, drawAttribute);
                        itemDelta += m_barItemDelta + BarWidth;
                    }
                    else if (m_chartRandererType == ChartRandererType.SingleBar)//单条显示
                    {
                        m_colorMode = ColorMode.Sector;
                        if (barDirType == ChartDirType.Horizontal)
                        {
                            if (isShowBorder)
                            {
                                DrawSimpleRectBorder(vh, CacheUnit.SetVector(groupDelta + centerX, 0 + centerY + itemDelta),
                                                     CacheUnit.SetVector(groupDelta + centerX, tmpInfo.value + centerY + itemDelta),
                                                     CacheUnit.SetVector(groupDelta + BarWidth + centerX, tmpInfo.value + centerY + itemDelta),
                                                     CacheUnit.SetVector(groupDelta + BarWidth + centerX, 0 + centerY + itemDelta));
                            }

                            drawAttribute.SetPosition(
                                CacheUnit.SetVector(groupDelta + centerX, 0 + centerY + itemDelta),
                                CacheUnit.SetVector(groupDelta + centerX, tmpInfo.value + centerY + itemDelta),
                                CacheUnit.SetVector(groupDelta + BarWidth + centerX, tmpInfo.value + centerY + itemDelta),
                                CacheUnit.SetVector(groupDelta + BarWidth + centerX, 0 + centerY + itemDelta)
                                );
                        }
                        else if (barDirType == ChartDirType.Vertical)
                        {
                            if (isShowBorder)
                            {
                                DrawSimpleRectBorder(vh,
                                                     CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + centerY),
                                                     CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + BarWidth + centerY),
                                                     CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + BarWidth + centerY),
                                                     CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + centerY));
                            }

                            drawAttribute.SetPosition(
                                CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + centerY),
                                CacheUnit.SetVector(0 + centerX + itemDelta, groupDelta + BarWidth + centerY),
                                CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + BarWidth + centerY),
                                CacheUnit.SetVector(tmpInfo.value + centerX + itemDelta, groupDelta + centerY)
                                );
                        }
                        drawAttribute.SetColor(tmpColor, tmpColor, tmpColor, tmpColor);
                        DrawSimpleQuad(vh, drawAttribute);
                        itemDelta += tmpInfo.value;
                    }
                }
                groupDelta += BarWidth + m_groupDelta;//设置组间距
            }
        }
Example #11
0
        private void ModifyVertices(VertexHelper vh)
        {
            tempVertexTriangleStream.Clear();
            vh.GetUIVertexStream(tempVertexTriangleStream);
            vh.Clear();

            float len = 0;

            for (int i = 0; i < keyPos.Count - 1; i++)
            {
                drawAttribute.SetPosition(
                    CacheUnit.SetVector(keyPos[i].x, keyPos[i].y),
                    CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y),
                    CacheUnit.SetVector(keyPos[i + 1].x, keyPos[i + 1].y - LineWidth),
                    CacheUnit.SetVector(keyPos[i].x, keyPos[i].y - LineWidth));
                drawAttribute.SetColor(
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor),
                    ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, LineColor));
                DrawSimpleQuad(vh, drawAttribute);
            }

            switch (ItemMode)
            {
            case PointItemMode.Square:
                len = lineWidth;
                //画点
                for (int i = 0; i < keyPos.Count; i++)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(-len, +len) + keyPos[i],
                        CacheUnit.SetVector(+len, +len) + keyPos[i],
                        CacheUnit.SetVector(+len, -len) + keyPos[i],
                        CacheUnit.SetVector(-len, -len) + keyPos[i]
                        );
                    drawAttribute.SetColor(
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                    DrawSimpleQuad(vh, drawAttribute);
                }
                break;

            case PointItemMode.Triangle:
                len = lineWidth * 3;
                for (int i = 0; i < keyPos.Count; i++)
                {
                    //模拟一个等边三角形
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(0, (1.732f - 1) * len * 0.5f) + keyPos[i],
                        CacheUnit.SetVector(0, (1.732f - 1) * len * 0.5f) + keyPos[i],
                        CacheUnit.SetVector(len / 2, (-1.732f + 1) * len * 0.5f) + keyPos[i],
                        CacheUnit.SetVector(-len / 2, (-1.732f + 1) * len * 0.5f) + keyPos[i]
                        );
                    drawAttribute.SetColor(
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                    DrawSimpleQuad(vh, drawAttribute);
                }
                break;

            case PointItemMode.Diamond:
                len = lineWidth * 1.5f;
                for (int i = 0; i < keyPos.Count; i++)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(len, 0) + keyPos[i],
                        CacheUnit.SetVector(0, -len) + keyPos[i],
                        CacheUnit.SetVector(-len, 0) + keyPos[i],
                        CacheUnit.SetVector(0, len) + keyPos[i]
                        );
                    drawAttribute.SetColor(
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                    DrawSimpleQuad(vh, drawAttribute);
                }
                break;

            case PointItemMode.Star:
                len = lineWidth * 2f;
                float width        = len * Mathf.Cos(54 * Mathf.Deg2Rad);
                float y            = width * Mathf.Tan(36 * Mathf.Deg2Rad);
                float buttomHeight = len * Mathf.Sin(54 * Mathf.Deg2Rad);
                for (int i = 0; i < keyPos.Count; i++)
                {
                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(len * Mathf.Cos(90 * Mathf.Deg2Rad), len * Mathf.Sin(90 * Mathf.Deg2Rad)) + keyPos[i],
                        CacheUnit.SetVector(len * Mathf.Cos(306 * Mathf.Deg2Rad), len * Mathf.Sin(306 * Mathf.Deg2Rad)) + keyPos[i],
                        CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i],
                        CacheUnit.SetVector(len * Mathf.Cos(234 * Mathf.Deg2Rad), len * Mathf.Sin(234 * Mathf.Deg2Rad)) + keyPos[i]
                        );
                    drawAttribute.SetColor(
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                    DrawSimpleQuad(vh, drawAttribute);

                    drawAttribute.SetPosition(
                        CacheUnit.SetVector(len * Mathf.Cos(18 * Mathf.Deg2Rad), len * Mathf.Sin(18 * Mathf.Deg2Rad)) + keyPos[i],
                        CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i],
                        CacheUnit.SetVector(0, -(buttomHeight - y)) + keyPos[i],
                        CacheUnit.SetVector(len * Mathf.Cos(162 * Mathf.Deg2Rad), len * Mathf.Sin(162 * Mathf.Deg2Rad)) + keyPos[i]
                        );
                    drawAttribute.SetColor(
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                        ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                    DrawSimpleQuad(vh, drawAttribute);
                }
                break;

            case PointItemMode.Circle:
                for (int i = 0; i < keyPos.Count; i++)
                {
                    for (int j = 0; j < 24; j++)
                    {
                        float cos = Mathf.Cos(j) * lineWidth, sin = Mathf.Sin(j) * lineWidth;
                        float nextCos = Mathf.Cos(j + 0.0628f * 15f) * lineWidth, nextSin = Mathf.Sin(j + 0.0628f * 15f) * lineWidth;

                        drawAttribute.SetPosition(
                            CacheUnit.SetVector(0, 0) + keyPos[i],
                            CacheUnit.SetVector(nextCos, nextSin) + keyPos[i],
                            CacheUnit.SetVector(cos, sin) + keyPos[i],
                            CacheUnit.SetVector(0, 0) + keyPos[i]
                            );
                        drawAttribute.SetColor(
                            ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                            ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                            ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor),
                            ChartUntils.GetMultipliedColor(tempVertexTriangleStream[0].color, PointColor));
                        DrawSimpleQuad(vh, drawAttribute);
                    }
                }
                break;

            case PointItemMode.None:
                break;

            default:
                break;
            }
        }
Example #12
0
 public void Clear()
 {
     Pos[0]   = Pos[1] = Pos[2] = Pos[3] = CacheUnit.SetVector(0, 0, 0);
     UV[0]    = UV[1] = UV[2] = UV[3] = CacheUnit.SetVector(0, 0, 0);
     Color[0] = Color[1] = Color[2] = Color[3] = UnityEngine.Color.white;
 }