最近在做一个数据分析的项目,需要用到图表,MSchart虽然效果不错,但是交互性太差,无法缩放、分页、不支持鼠标事件需要自己写事件很麻烦,于是到网上搜了一下,很多javascript、swf的控件,比如FusionChart,ChartLet,看起来都还不错,但是对于winform的支持都比较寒酸,最后居然在另外一个博客里发现了现在正在用的Visifire,唯一的缺点就是收费的,免费的有几个大大的水印很是烦人。
由于项目需要给领导展示,总不能就挂几个大水印在那里,于是在网上找了一下,发现5.0.4版本有人发过破解方法,大概是通过重写LoadWm()方法,可以去掉右上角的固定水印。现有版本是5.0.6,不知道有没有修补,经过测试依然可行。
但是,顶上出现的版本提示依旧很烦人,经过测试,发现这是一个TextBlock,于是通过断点调试,找到这个TextBlock所在,删掉,大功告成!
下面是代码:
1 Public Sub CreateChart() 2 ' Create a new instance of Chart 3 Dim chart As New Meee 4 chart.Width = 500 5 chart.Height = 300 6 chart.AnimationEnabled = False 7 8 9 AddHandler chart.Rendered, AddressOf chart_rendered 10 11 End Sub 12 13 Public Class meee 14 Inherits Chart 15 16 17 Protected Overrides Sub LoadWm() 18 19 20 End Sub 21 22 Protected Overrides Sub OnWatermarkPropertyValueChanged(ByVal value As Boolean) 23 24 25 End Sub 26 27 28 End Class 29 30 31 Public Sub chart_rendered(ByVal sender As Object, ByVal e As EventArgs) '破解代码 32 Dim c As Meee = sender 33 Dim legend = c.Legends(0) 34 Dim root As Grid = legend.Parent 35 36 root.Children.RemoveAt(9) 37 root.Children.RemoveAt(9) 38 39 End Sub 40