public void initData(List <Row> rowList) { RowList.Clear(); this.RowList = rowList; AreaRect = new AreaPositionRect(EStartX, EStartY, EStartX + EViewWidth, EStartY + rowHeight); AreaRect.PaddingIn = 0; List <DataModel> list = new List <DataModel>(); int index = 0; foreach (var item in RowList) { item.RowHeight = AreaRect.Height; item.RowWidth = AreaRect.Width; list.Add(new AutoSortDataModel(item.Columns[0].Content + "", 0, 100, ReportViewUtils.PerferColors[index % 5])); foreach (var column in item.Columns) { item.AddColumn(column); } index++; } //是否展示滑动条 if (IsShowScrollBar) { if (this.Parent is Panel) { Panel panel = this.Parent as Panel; if (this.Created && this.IsHandleCreated && !this.IsDisposed) { try { this.Invoke((EventHandler) delegate { panel.AutoScroll = true; panel.Controls.Add(label); label.Location = new Point(0, EStartY + rowHeight * rowList.Count + 2 * rowHeight); }); } catch (Exception) { } } } } ReportViewAdapter adapter = new SimpleListViewAdapter(); //设置数据源 adapter.setData(list); //用于设置起始位置 adapter.setBasePostitionRect(AreaRect); setAdapter(adapter);//设置panel的高度 this.Invalidate(); }
public override void ReLocationModelPos() { EStartX = LeftPadding; EStartY = TopPadding; if (MyToolTip is CoordinateHelpLineToolTip) { CoordinateHelpLineToolTip tool = MyToolTip as CoordinateHelpLineToolTip; tool.CoordinateWidth = EViewWidth; tool.CoordinateHeight = EViewHeight; tool.CoordinateStartX = EStartX; tool.CoordinateStartY = EStartY + EViewHeight - BottomPadding; } AreaRect = new AreaPositionRect(EStartX, EStartY, EStartX + EViewWidth, EStartY + RowHeight); AreaRect.PaddingIn = 0; if (adapter != null) { adapter.setIndex(-1); adapter.setBasePostitionRect(AreaRect); } }
public override void setBasePostitionRect(DrawUtils.AreaPositionRect posRectData) { this.posRectData = posRectData; }
//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(); }
//设置最基础的位置边界信息 public abstract void setBasePostitionRect(AreaPositionRect posRectData);