Example #1
0
        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();
        }
Example #2
0
 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);
     }
 }
Example #3
0
 public override void setBasePostitionRect(DrawUtils.AreaPositionRect posRectData)
 {
     this.posRectData = posRectData;
 }
Example #4
0
        //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();
        }
Example #5
0
 //设置最基础的位置边界信息
 public abstract void setBasePostitionRect(AreaPositionRect posRectData);