C1FlexGrid实现柱形图

来源:互联网 发布:剑灵捏脸数据导入教程 编辑:程序博客网 时间:2024/05/30 02:52
 

这次的情报分析模块做到几个好玩的功能,大开眼界,C1FlexGrid中画矩形,利用OwnerDrawCell事件实现;斜线功能利用Paint事件实现。代码如下:

Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    With Grid
        .DrawMode = DrawModeEnum.OwnerDraw
    End With
End Sub

Private Sub Grid_OwnerDrawCell(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs) Handles Grid.OwnerDrawCell
    Dim rc As Rectangle = e.Bounds
    '矩形大小指定
    rc.Width = Grid.Cols(0).WidthDisplay / 2
    rc.Height = Grid.Rows.MinSize / 2
    '矩形左上角坐标指定
    rc.X = 0
    rc.Y = 100
    '填充颜色
    e.DrawCell(DrawCellFlags.Background Or DrawCellFlags.Border)

    rc.Inflate(-1, -1)
    e.Graphics.FillRectangle(Brushes.Blue, rc)
    rc.Inflate(-1, -1)
    e.Graphics.FillRectangle(Brushes.LightBlue, rc)
End Sub

Note:

1、Inflate()
   放大指定量,第一个参数为水平放大量,第二个参数为垂直放大量

2、触发Grid_OwnerDrawCell事件
   Form_Load中如果不加控制代码,则Grid属性中要手动设置绘图模式为OwnerDraw

3、矩形位置与个数
   如果不限制行列,则Grid中每个单元格都将绘制一个矩形

   指定左上角坐标后,Grid只绘制一个矩形,要想绘制第二个矩形,必须再次指定左上角坐标

4、矩形大小
   无论宽度还是高度,均能超出单元格直到Grid可视边缘,换言之,单元格仅是便于设置矩形起点而已。

5、FillRectangle()的颜色
   只能使用Brushes类,可自定义SolidBrush变量存放颜色,再进行赋值,语句如下:
   Dim Outer, Inner As SolidBrush
   Outer = New SolidBrush(Color.Black)
   Inner = New SolidBrush(Color.Blue)
   e.Graphics.FillRectangle(Outer, rc)

原创粉丝点击