0
回答
visifire使用心得
华为云数据库免费试用   

visifire是silverlight下很不错的一套开源组件,最近其 发布了2.0beta版本,本文将主要记录一些这个版本跟以前版本不 同的地方.

昨天初步把1.55版本移植到了2.0beta,没有遇到太大的麻烦,不过确实还是进行一些细节的修改,这些更改看上去更合理了,很多东西都不用往 children下硬塞,直接类似Serise.Add或者Titles.Add就可以了.

由于visifire更新速度还是挺快的,所以请留意下,写这篇文章的时候visifire的版本是2.0 beta,未来的版本可能会有变化,具体细节请阅读当前时间的visifire对应版本的文档.

首先,图表最大的一个作用之一就是帮助我们观察数据,当图表中的数字很大并且它们之间的值相差的很小的时候,通常就会很难观察,很难从图表中发现信息,比如下面这样的图:


visifire为我们提供了一个属性,StartFromZero,通过设置这个属性为false,就可以帮助我们观察到数据的差异,效果如下图:


砍去了公共的部分,观察数据就容易多了.这里跟 excel里的表格表达有些不同,在excel里是把中间不必要的部分加上...省去公共的部分.

图表的创建跟之前的版本变化还是不大的,我在迁移的过程没有遇到太大的问题.关于创建图表的示例代码大家可以展开下面的代码块(笔者以后也会经常回来参考 这段代码:)):

Code
private
void CreateChart()
{
   
// Create a Chart element
    Chart chart =
new Chart();
   
// Set chart width and height
    chart.Width =
400;
    chart.Height
=
300;
   
// Create new DataSeries
    DataSeries dataSeries =
new DataSeries();
   
// Number of DataPoints to be generated

int numberOfDataPoints =
10;
   
// To set the YValues of DataPoint
    Random random =
new Random();

   
// Loop and add a few DataPoints

for (int loopIndex =
0; loopIndex < numberOfDataPoints; loopIndex++)
   
{
        
// Create a DataPoint
        DataPoint dataPoint =
new DataPoint();
        
// Set the YValue using random number
        dataPoint.YValue = random.Next(1, 100);
        
// Add DataPoint to DataSeries
        dataSeries.DataPoints.Add(dataPoint);
    }


   
// Add DataSeries to Chart
    chart.Series.Add(dataSeries);
   
// Add chart to the LayoutRoot for display
    LayoutRoot.Children.Add(chart);
}



从这个代码中可以看出像DataSeries和Datapoint以及Title对象都有了明确的归属,不需要Children.Add的方式了.个人认 为这样是非常合理的.

对于数据的实时更新部分,可以参考如下的代码:

Code
for (Int32 i =
0; i <
5; i++)
{
   
// Update DataPoint YValue property
    chart.Series[0].DataPoints.YValue = rand.Next(-80, 100); // Changing the dataPoint YValue at runtime
}


看上去简单多了,直接更改Series里面的Datapoint实例就可以,但是实时更新的时候不知道为什么visifire没有提供动画,而是很生硬的 就显示过了了,这样显示类似监视机器cpu和内存消耗的功能还可以,比如visifire官方网站上的这段演示:

不过,可能是考虑到数据的update有insert,delete和edit几种情况,所以目前的这个版本没有考虑进来这个功能(当然或许有我不知道, 还麻烦熟悉的朋友指点一下).

另外对于图表类型的定义现在有一个明确的枚举类型了,其是很早就应该这么做了.

Code
dataSeries.RenderAs = RenderAs.Line;

这个枚举类型可以取很多, 有如下类型:

Member name
Area
Bar
Bubble
Column
Doughnut
Line
Pie
Point
StackedArea
StackedArea100
StackedBar
StackedBar100
StackedColumn

StackedColumn100
具体的效果请大家参考Visifire Gallery,这里简单截取一个图下来:



虽然网上关注visifire的还不是很多,社区资源比较少,不过visifire的文档还是很全面 的,还有很多示例可以让我们参考.我在一些BI应用中也一直在使用这个组件,效果很不错,推荐更多的朋友使用.
一些细节:visifire的footprint从140多KB增加到了199KB,相对来说还是可以承受的,另外visifire的网站标题也更换成了 Silverlight & WPF Chart,看得出来在2.0版本上所做的努力.目前还是beta,相信正式版本很快就会和大家见面,其是visifire的更新速度还是很不错的,半个 月通常就会有一个版本的更新.
今天注意到visifire的代码已经host在googlecode下了,SVN的checkout地址是:
http://visifire.googlecode.com/svn/branches/Visifire2.x

举报
红薯
发帖于10年前 0回/2K+阅
顶部