/// <summary> /// 设置适配器 /// </summary> /// <param name="adapter"></param> public void setAdapter(ReportViewAdapter adapter) { this.adapter = adapter; int count = adapter.getCount(); adapter.next(); if (isVerticalShowData) { //设置高度 int height = adapter.getPositionRect().bottom - adapter.getPositionRect().top + padding; //this.Height = height * count + padding; Label lable = new Label(); lable.Location = new Point(0, height * count + padding); lable.Text = ""; lable.Width = 0; this.Controls.Add(lable); } else { //设置宽度 int width = adapter.getPositionRect().right - adapter.getPositionRect().left + padding; this.Width = width * count + padding; } adapter.setIndex(-1); }
/// <summary> /// 设置适配器 /// </summary> /// <param name="adapter"></param> internal void setAdapter(ReportViewAdapter adapter) { this.adapter = adapter; //设置高度 int count = adapter.getCount(); adapter.next(); int height = adapter.getPositionRect().bottom - adapter.getPositionRect().top + adapter.getPadding(); this.Height = height * count + adapter.getPadding(); adapter.setIndex(-1); }
/// <summary> /// 绘制操作 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { //自己声明的Graphics Graphics g = e.Graphics; if (backGroundColor != null) { Brush background = new SolidBrush(backGroundColor); Rectangle rect = new Rectangle(0, 0, this.Width, this.Height); g.FillRectangle(background, rect); background.Dispose(); } if (adapter != null) { adapter.setIndex(-1); DataModel data = null; PositionRectData rectData = null; while (adapter.next()) { data = adapter.getItem(); rectData = adapter.getPositionRect(); childPaint(e, rectData, myColor, TextColor); rectData.right = this.Width; list.Add(rectData); } introducePaint(g, currentData, myColor, TextColor); } //释放资源 //utils.disposeGraphics(g); //g.Dispose(); }
//private int getIndexFromList(int y) //{ // //throw new NotImplementedException(); // if (list.Count == 0) // { // return 0; // } // return (int)(y * 1.0f * list.Count / this.Height); //} /// <summary> /// 绘制操作 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { //自己声明的Graphics Graphics g = e.Graphics; //绘制的质量设置 g.CompositingQuality = CompositingQuality.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; g.SmoothingMode = SmoothingMode.HighQuality; //绘制的画笔和笔刷 Pen linePen = new Pen(LineColor, StrokenWidth); Brush lineBrush = new SolidBrush(LineColor); Brush TextBrush = new SolidBrush(TextColor); Brush DataBrush = new SolidBrush(DataColor); Font font_Text = new Font("Consolas", TextSize); Font font_Data = new Font("Consolas", DataSize); //绘制背景 if (BackGroundColor != null) { Brush background = new SolidBrush(BackGroundColor); Rectangle rect = new Rectangle(0, 0, this.Width, this.Height); g.FillRectangle(background, rect); background.Dispose(); } DataModel mouseMoveModel = null; if (adapter != null) { adapter.setIndex(-1); DataModel data = null; AreaPositionRect rectData = null; while (adapter.next()) { data = adapter.getItem(); rectData = adapter.getPositionRect(); data.Area.left = rectData.left; data.Area.right = rectData.right; data.Area.top = rectData.top - currentScrollY; data.Area.bottom = rectData.bottom - currentScrollY; ///这个写的挺合理的 ///子类自己的绘制操作 childPaint(g, data, linePen, lineBrush, TextBrush, DataBrush, font_Text, font_Data); if (isVerticalShowData) { data.Area.right = this.Width; } //data.Area.right = this.Width; if (data.Area.IsMouseIn) { mouseMoveModel = data; } //rectData.right = this.Width; //list.Add(rectData); } //数据辅助类的绘制 introducePaint(g, mouseMoveModel, LineColor, TextColor, TextSize); } //释放资源 disposeResource(linePen, lineBrush, TextBrush, DataBrush, font_Text, font_Data); ///绘制ToolTip if (toolTip != null) { toolTip.OnRender(g, mouseMoveModel); } //utils.disposeGraphics(g); //g.Dispose(); }