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