visifire笔记「建议收藏」

visifire笔记「建议收藏」visifire是silverlight下很不错的一套开源组件,最近其发布了2.0beta版本,本文将主要记录一些这个版本跟以前版本不同的地方.昨天初步把1.55版本移植到了2.0beta,没有遇到太大的麻烦,不过确实还是进行一些细节的修改,这些更改看上去更合理了,很多东西都不用往children下硬塞,直接类似Serise.Add或者Titles.Add就可以了.由于visifir…

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

 

 

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

visifire笔记「建议收藏」

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

visifire笔记「建议收藏」

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

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

ContractedBlock.gif
ExpandedBlockStart.gif
Code

visifire笔记「建议收藏」private void CreateChart()
ExpandedBlockStart.gifContractedBlock.gif
visifire笔记「建议收藏」{

visifire笔记「建议收藏」    
// Create a Chart element
visifire笔记「建议收藏」
    Chart chart = new Chart();
visifire笔记「建议收藏」    
// Set chart width and height
visifire笔记「建议收藏」
    chart.Width = 400;
visifire笔记「建议收藏」    chart.Height 
= 300;
visifire笔记「建议收藏」    
// Create new DataSeries
visifire笔记「建议收藏」
    DataSeries dataSeries = new DataSeries();
visifire笔记「建议收藏」    
// Number of DataPoints to be generated
visifire笔记「建议收藏」
    int numberOfDataPoints = 10;
visifire笔记「建议收藏」    
// To set the YValues of DataPoint
visifire笔记「建议收藏」
    Random random = new Random();
visifire笔记「建议收藏」
visifire笔记「建议收藏」    
// Loop and add a few DataPoints
visifire笔记「建议收藏」
    for (int loopIndex = 0; loopIndex < numberOfDataPoints; loopIndex++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
visifire笔记「建议收藏」{

visifire笔记「建议收藏」        
// Create a DataPoint
visifire笔记「建议收藏」
        DataPoint dataPoint = new DataPoint();
visifire笔记「建议收藏」        
// Set the YValue using random number
visifire笔记「建议收藏」
        dataPoint.YValue = random.Next(1100);
visifire笔记「建议收藏」        
// Add DataPoint to DataSeries
visifire笔记「建议收藏」
        dataSeries.DataPoints.Add(dataPoint);
visifire笔记「建议收藏」    }

visifire笔记「建议收藏」
visifire笔记「建议收藏」    
// Add DataSeries to Chart
visifire笔记「建议收藏」
    chart.Series.Add(dataSeries);
visifire笔记「建议收藏」    
// Add chart to the LayoutRoot for display
visifire笔记「建议收藏」
    LayoutRoot.Children.Add(chart);
visifire笔记「建议收藏」}

visifire笔记「建议收藏」

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

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

ContractedBlock.gif
ExpandedBlockStart.gif
Code

for (Int32 i = 0; i < 5; i++)
{

    
// Update DataPoint YValue property
    chart.Series[0].DataPoints[i].YValue = rand.Next(80100); // Changing the dataPoint YValue at runtime
}

 

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

visifire笔记「建议收藏」

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

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

ContractedBlock.gif
ExpandedBlockStart.gif
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的还不是很多,社区资源比较少,不过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

 

关于visifire 2.0 beta以及visifire更多的信息请参考我昨天发布的一个随笔下面的引用:

http://www.cnblogs.com/aspnetx/archive/2008/11/22/1338993.html

转载于:https://www.cnblogs.com/aspnetx/archive/2008/11/23/1339368.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162780.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vuex使用教程(最好最详细的乒乓教程)

    最详细的Vuex教程什么是Vuex?vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。引入Vuex(前提是已经用Vue脚手架工具构建好项目)1、利用npm包管理工具,进行安装vuex。在控制命令行中输入下边的命令就可以了。npminstallvuex

    2022年4月14日
    115
  • 详解PyTorch可视化工具visdom(一)

    一、介绍在深度学习领域,模型训练是一个必须的过程,因此常常需要实时监听并可视化一些数据,如损失值loss,正确率acc等。在Tensorflow中,最常使用的工具非Tensorboard莫属;在Pytorch中,也有类似的TensorboardX,但据说其在张量数据加载的效率方面不如visdom。visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。二、如何安装及启动2.1安装安装命令pipinstallvisdom安装

    2022年4月4日
    48
  • 怎么开发一个简单的小程序_微信小程序编写教程

    怎么开发一个简单的小程序_微信小程序编写教程做任何程序开发要首先找到其官方文档,我们先来看看其有哪些官方文档。微信小程序开发文档链接为:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html,如下图:这里就是做微信小程序开发的全部官方文档。知道了文档的位置,下面我们来介绍下如何做一个微信小程序开发:第一步:下载微信小程序开发者工具并安装,下载路径:https://mp.weix…

    2022年9月17日
    4
  • CAS算法的理解及应用「建议收藏」

    CAS算法的理解及应用「建议收藏」应用原子操作类,例如AtomicInteger,AtomicBoolean …适用于并发量较小,多cpu情况下;Java中有许多线程安全类,比如线程安全的集合类。从Java5开始,在java.util.concurrent包下提供了大量支持高效并发访问的集合接口和实现类。如:ConcurrentMap、ConcurrentLinkedQueue等线程安全集合。引入问题那么问题来了,这些线程安全类的底层是怎么保证线程安全的,你可能会想到是不是使用同步代码锁synchronized?引入概念这些线

    2022年8月9日
    8
  • 汇编指令和机器码的对应表_汇编和机器码对照表

    汇编指令和机器码的对应表_汇编和机器码对照表指令集依照机器操作码、汇编助记符和汇编操作数来描述指令,遵循下列约定:lreg8:8位寄存器。lreg16:16位寄存器。lmem8:8位内存数值。lmem16:16位内存数值。limmed8:8位立即数值。limmed16:16位立即数值。limmed32:32位立即数值。lsegReg:16位段寄存器。机器操作码汇编助记符和操作数00ADDreg8/mem8,reg801ADD

    2022年9月25日
    5
  • java.exe 0xc000012d_应用程序无法正常启动 0xc000012d

    java.exe 0xc000012d_应用程序无法正常启动 0xc000012d应用程序无法正常启动0xc000012d,主要原因在于你的电脑缺少相对应的运行环境,可通过下载.netframework来解决。方法一:具体步骤如下1、打开百度输入”.netframework”,输入后单击搜索。2、接下来,我们找到下载地址并将程序下载到我们的计算机上。3、接下来,我们找到新下载的。在桌面上单击“运行”。4、安装之后,我们返回到刚刚打开错误的程序位置。最后,我们可以点击再次打开…

    2022年9月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号