这次的情报分析模块做到几个好玩的功能,大开眼界,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)