Ejemplo n.º 1
0
        private void DrawMultiRectAngel(Graphics g, DataModel Data, Pen linePen, Brush lineBrush, Brush TextBrush, Brush DataBrush, System.Drawing.Font font_Text, System.Drawing.Font font_Data)
        {
            if (Data is AutoSortDataModel)
            {
                AutoSortDataModel model = Data as AutoSortDataModel;
                EStartX = Data.Area.left + LeftPadding;
                //宽高
                EViewWidth   = (this.Width - EStartX - RightPadding);
                EViewHeight  = Data.Area.bottom - Data.Area.top;
                TextLocation = TextLocations.left;
                //底色
                Brush  selfBrush = new SolidBrush(Color.FromArgb(200, 88, 94, 92));
                string text      = Data.mainText;
                text = LimiteText(g, font_Text, text);
                DrawString(g, TextBrush, font_Text, Data, text, "");
                //g.DrawString(Data.mainText, font_Text, DataBrush, startX + (padding - Text_InArc.Length * TextSize) / 2, startY + (height - TextSize) / 2);

                int perWidth = (int)(EViewWidth * 1.0f / MultiRectangleCount);
                //绘制其它色的个数
                int drawCount = (int)(Data.mainData * 1.0f / model.MaxData * MultiRectangleCount);
                if (IsDrawColorfulRectAngle)
                {
                    lineBrush.Dispose();
                    lineBrush = new SolidBrush(Data.ModelColor);
                }
                for (int i = 0; i < MultiRectangleCount; i++)
                {
                    Rectangle rect = new Rectangle(EStartX + (perWidth) * i + MultiPadding, Data.Area.top, perWidth - MultiPadding, EViewHeight);
                    if (i < drawCount)
                    {
                        g.FillRectangle(lineBrush, rect);
                    }
                    else
                    {
                        if (drawCount <= 0)
                        {
                            g.FillRectangle(selfBrush, rect);
                        }
                    }
                }
                int finalX = EStartX + padding * MultiRectangleCount + 2 * padding;
                TextLocation = TextLocations.right;
                DrawString(g, TextBrush, font_Data, Data, Data.mainData + " / " + model.MaxData, "");
                //g.DrawString("/" + MaxNum, font_Data, selfBrush, finalX + (Data_InArc.ToString().Length) * DataSize, startY + (height - DataSize * (Data_InArc.ToString().Length - 1)) / 2);
                ///建议把绘制的直接写在这里
                if (Data.Area.IsMouseIn)
                {
                    Color color   = Data.ModelColor;
                    Brush myBrush = new SolidBrush(Color.FromArgb(BackGroundAlpha, color.R, color.G, color.B));
                    g.FillRectangle(myBrush, new Rectangle(Data.Area.left, Data.Area.top - padding / 2,
                                                           this.Width, Data.Area.bottom - Data.Area.top + padding));
                    myBrush.Dispose();
                }
                selfBrush.Dispose();
            }
        }
Ejemplo n.º 2
0
        private void DrawArcRectAngle(Graphics g, DataModel Data, Pen linePen, Brush lineBrush, Brush TextBrush, System.Drawing.Font font_Text)
        {
            if (Data.Area.top < 2 * padding)
            {
                return;
            }

            if (Data is AutoSortDataModel)
            {
                AutoSortDataModel model = Data as AutoSortDataModel;
                //建议把绘制的直接写在这里
                int PaddingStart_X = Data.Area.left + LeftPadding + memberWidth + padding / 2;
                //宽高
                int height = Data.Area.bottom - Data.Area.top;

                int   width        = this.Width - PaddingStart_X - RightPadding;
                float per          = width * 1.0f / model.MaxData;
                float realShowData = per * Data.mainData;
                //Rectangle rect = new Rectangle(PaddingStart_X, Data.Area.top, width, height);
                Rectangle rectReal = new Rectangle(PaddingStart_X, Data.Area.top, (int)realShowData, height);

                if (IsDrawColorfulRectAngle)
                {
                    lineBrush.Dispose();
                    lineBrush = new SolidBrush(Data.ModelColor);
                }
                g.FillRectangle(lineBrush, rectReal);

                //绘制字体
                string text      = Data.mainText;
                string firstText = "";
                if (isOvertTextShowCount(g, text, font_Text))
                {
                    if (TextShowCount < text.Length)
                    {
                        firstText = LimiteText(g, font_Text, text);
                    }
                    else
                    {
                        firstText = text;
                    }

                    if (!IsTwoLineShow)
                    {
                        if (TextLeaveOutIsEnd)
                        {
                            text = firstText;
                        }
                        if (HisTextLocation == HisTextLocations.none)
                        {
                            HisTextLocation = HisTextLocations.left;
                        }
                        //ReportViewUtils.drawString(g, LocationModel.Location_Up_Right_Right, text, font_Text, TextBrush, Data.Area.left, Data.Area.top - TextAndTextPadding, LeftPadding, height);
                    }
                    else
                    {
                        string endText = text.Substring(TextShowCount);
                        if (isOvertTextShowCount(g, endText, font_Text))
                        {
                            if (TextLeaveOutIsEnd)
                            {
                                text = endText.Substring(0, TextShowCount - 3) + "...";
                            }
                            else
                            {
                                text = "..." + endText.Substring(TextShowCount);
                            }
                        }
                        if (HisTextLocation == HisTextLocations.none)
                        {
                            HisTextLocation = HisTextLocations.left_up_down;
                        }
                    }
                }
                else
                {
                    if (HisTextLocation == HisTextLocations.none)
                    {
                        HisTextLocation = HisTextLocations.left;
                    }
                }
                //g.DrawString(text, font_Text, TextBrush, Data.Area.left + (newStart_X - Data.Area.left - text.Length * TextSize) / 2, Data.Area.top);
                DrawString(g, TextBrush, font_Text, Data, text, firstText);

                if (IsDrawValue)
                {
                    ReportViewUtils.drawString(g, LocationModel.Location_Right_Right, Data.mainData + "", font_Text, TextBrush, PaddingStart_X + realShowData, Data.Area.top, padding, height);
                }

                ///建议把绘制的直接写在这里
                if (Data.Area.IsMouseIn)
                {
                    Color color   = Data.ModelColor;
                    Brush myBrush = new SolidBrush(Color.FromArgb(100, 210, 210, 210));
                    g.FillRectangle(myBrush, new Rectangle(Data.Area.left, Data.Area.top - padding / 4,
                                                           this.Width, Data.Area.bottom - Data.Area.top + padding / 2));
                    myBrush.Dispose();
                }

                if (IsShowPropertyBer)
                {
                    DrawSelfDefine(g, PropertycontentFont, width + RightPadding);
                }
            }
        }
Ejemplo n.º 3
0
        private void DrawArcRectAngle(Graphics g, DataModel Data, Pen linePen, Brush lineBrush, Brush TextBrush, System.Drawing.Font font_Text)
        {
            if (Data is AutoSortDataModel)
            {
                AutoSortDataModel model = Data as AutoSortDataModel;
                ///建议把绘制的直接写在这里
                int PaddingStart_X = Data.Area.left + LeftPadding;
                //宽高
                int height = Data.Area.bottom - Data.Area.top;
                int width  = this.Width - PaddingStart_X - 2 * padding - height;

                //int width = this.Width - newStart_X - 2 * padding;
                //圆角的弧度
                int   radius       = height / 2;
                float per          = width * 1.0f / model.MaxData;
                float realShowData = per * Data.mainData;

                Rectangle rect     = new Rectangle(PaddingStart_X, Data.Area.top, width + height, height);
                Rectangle rectReal = new Rectangle(PaddingStart_X, Data.Area.top, (int)realShowData + height, height);

                //Rectangle rect = new Rectangle(newStart_X, Data.Area.top, width, height);
                //Rectangle rectReal = new Rectangle(newStart_X, Data.Area.top, (int)realShowData, height);
                //底色
                Brush        selfBrush = new SolidBrush(Color.FromArgb(200, 88, 94, 92));
                GraphicsPath path      = ReportViewUtils.CreateRoundedRectanglePath(rect, radius);
                //绘制底色
                g.FillPath(selfBrush, path);

                if (IsDrawColorfulRectAngle)
                {
                    lineBrush.Dispose();
                    lineBrush = new SolidBrush(Data.ModelColor);
                }
                //绘制展示色
                path = ReportViewUtils.CreateRoundedRectanglePath(rectReal, radius);
                g.FillPath(lineBrush, path);

                //绘制字体
                string text      = Data.mainText;
                string firstText = "";
                if (isOvertTextShowCount(g, text, font_Text))
                {
                    if (TextShowCount < text.Length)
                    {
                        firstText = LimiteText(g, font_Text, text);
                    }
                    else
                    {
                        firstText = text;
                    }

                    if (!IsTwoLineShow)
                    {
                        if (TextLeaveOutIsEnd)
                        {
                            text = firstText;
                        }
                        if (TextLocation == TextLocations.none)
                        {
                            TextLocation = TextLocations.left;
                        }
                        //ReportViewUtils.drawString(g, LocationModel.Location_Up_Right_Right, text, font_Text, TextBrush, Data.Area.left, Data.Area.top - TextAndTextPadding, LeftPadding, height);
                    }
                    else
                    {
                        string endText = text.Substring(TextShowCount);
                        if (isOvertTextShowCount(g, endText, font_Text))
                        {
                            if (TextLeaveOutIsEnd)
                            {
                                text = endText.Substring(0, TextShowCount - 3) + "...";
                            }
                            else
                            {
                                text = "..." + endText.Substring(TextShowCount);
                            }
                        }
                        if (TextLocation == TextLocations.none)
                        {
                            TextLocation = TextLocations.left_up_down;
                        }
                    }
                }
                else
                {
                    if (TextLocation == TextLocations.none)
                    {
                        TextLocation = TextLocations.left;
                    }
                }
                //g.DrawString(text, font_Text, TextBrush, Data.Area.left + (newStart_X - Data.Area.left - text.Length * TextSize) / 2, Data.Area.top);

                DrawString(g, TextBrush, font_Text, Data, text, firstText);

                if (IsDrawRatio)
                {
                    //绘制右侧百分比
                    float  perNum = Data.mainData * 1.0f / model.MaxData * 100;
                    string str    = (Math.Round(perNum, 2)).ToString();
                    //g.DrawString(str + "%", font_Data, DataBrush, width - (str.Length + 1) * TextSize + startX, startY);
                    ReportViewUtils.drawString(g, LocationModel.Location_Right_Right, str + "%", font_Text, TextBrush, Data.Area.left + LeftPadding, Data.Area.top - height, width + height, height);
                }
                path.Dispose();
                selfBrush.Dispose();

                //utils.drawReportView(g, RePortViewStyle.Arc_Angle_rectangle_EventHandle, Data.Area.left, Data.Area.top, Data.Area.right, Data.Area.bottom - Data.Area.top, linePen.Color, Data.mainText, Data.mainData, 400, TextSize, DataSize);

                ///建议把绘制的直接写在这里
                if (Data.Area.IsMouseIn)
                {
                    Color color   = Data.ModelColor;
                    Brush myBrush = new SolidBrush(Color.FromArgb(BackGroundAlpha, color.R, color.G, color.B));
                    g.FillRectangle(myBrush, new Rectangle(Data.Area.left, Data.Area.top - padding / 2,
                                                           this.Width, Data.Area.bottom - Data.Area.top + padding));
                    myBrush.Dispose();
                }
            }
        }
Ejemplo n.º 4
0
        private void DrawMultiSimpleText(Graphics g, DataModel Data, Pen linePen, Brush lineBrush, Brush TextBrush, Brush DataBrush, System.Drawing.Font font_Text, System.Drawing.Font font_Data)
        {
            if (Data is AutoSortDataModel)
            {
                AutoSortDataModel model = Data as AutoSortDataModel;
                EStartX = Data.Area.left + LeftPadding;
                //宽高
                EViewWidth  = (this.Width - EStartX - RightPadding);
                EViewHeight = Data.Area.bottom - Data.Area.top;
                //底色
                Brush selfBrush = new SolidBrush(Color.FromArgb(200, 88, 94, 92));

                ///建议把绘制的直接写在这里
                if (Data.Area.IsMouseIn)
                {
                    Color color   = Data.ModelColor;
                    Brush myBrush = new SolidBrush(Color.FromArgb(BackGroundAlpha, color.R, color.G, color.B));
                    g.FillRectangle(myBrush, new Rectangle(Data.Area.left, Data.Area.top - padding / 2,
                                                           this.Width, Data.Area.bottom - Data.Area.top + padding));
                    myBrush.Dispose();
                }
                //绘制字体
                string text      = Data.mainText;
                string firstText = "";
                if (isOvertTextShowCount(g, text, font_Text))
                {
                    firstText = LimiteText(g, font_Text, text);
                    if (!IsTwoLineShow)
                    {
                        if (TextLeaveOutIsEnd)
                        {
                            text = firstText;
                        }
                        if (TextLocation == TextLocations.none)
                        {
                            TextLocation = TextLocations.center;
                        }
                        //ReportViewUtils.drawString(g, LocationModel.Location_Up_Right_Right, text, font_Text, TextBrush, Data.Area.left, Data.Area.top - TextAndTextPadding, LeftPadding, height);
                    }
                    else
                    {
                        if (CurrentSpiltLength <= text.Length)
                        {
                            text = text.Substring(CurrentSpiltLength);
                        }
                        else
                        {
                            text = "";
                        }
                        if (TextLocation == TextLocations.none)
                        {
                            TextLocation = TextLocations.center;
                        }
                    }
                }
                else
                {
                    if (TextLocation == TextLocations.none)
                    {
                        TextLocation = TextLocations.center;
                    }
                    firstText = text;
                    text      = "";
                }
                //text = LimiteText(g, font_Text, text);
                DrawString(g, TextBrush, font_Text, Data, firstText, text);
                selfBrush.Dispose();
            }
        }