在.NET程序/网站中如果要生成统计图表/图形,以前可以采用OWC(Office Web Components),如OfficeXP组件OWC10、Office2003组件OWC11。OWC采用COM-DLL方式的调用接口,但主要缺憾 是生成的图片不够美观,不够“现代”。

现在,随着.NET 3.5的发布,其引入了新的MSChart组件,当然,已经彻底的.NET化了。

一、要使用这个新的图形组件,需要.NET 3.5 SP1环境。
下载安装以下文件,分别是组件安装包、中文语言包、VS插件。
MSChart.exe
MSChartLP_chs.exe
MSChart_VisualStudioAddOn.exe
还有官方的文档,但目前是英文的。

二、言归正传,现在来搞清楚ImageLocation属性的意思。
Chart.ImageLocation
名称空间:System.Web.UI.DataVisualization.Charting
程序集:System.Web.DataVisualization(system.web.datavisualization.dll)
在VS2008中,其默认值为:ChartPic_#SEQ(300,3)
这个好像不太好理解啊:(
好吧,先看几个关联属性吧

1、Chart.RenderType
此属性决定MSChart生成的图形以何种方式送到客户端,有三种:
ImageTag,图形在服务端保存为临时文件,并将临时文件的URL作为HTML中<IMG>标签的SRC属性值。而此临时文件的URL规则及临时文件如何生成可由ImageLocation属性确定。
BinaryStreaming,不在服务端生成图形文件,<IMG>标签的SRC属性值将指向另一个负责生成图形的.aspx页面。
ImageMap,不显示实际的图形,仅创建图片热区(image map)。
默认值是ImageTag,就是会在服务端生成临时文件。

2、Chart.ImageStorageMode
此属性决定生成图形的存储方式,有两个选项:
UseHttpHandler,默认值,由HTTP处理程序存储图形文件到内存或文件。但生成的文件客户端是不能够直接能过URL访问到的,<IMG>标签的SRC属性值形如:
ChartImg.axd?i=chart_67fdbfec448349e686916b97f1351e90_0.png&amp;g=f96eecccd0334d70b8c9b0702894182b
并不指向服务端一个物理存储位置。
UseImageLocation,作为临时文件存储在服务端指定位置。在客户端可以通过URL直接获取到图片。可进一步指定图片存储目录位置。图片文件名可以是随机性的也可以是固定的。

3、Chart.ImageType
生成图形文件的格式,可以是BMG、JPEG、PNG、EMF。

现在回到Chart.ImageLocation,其实在上面已经提到了它的作用,就是决定图形临时文件的URL规则及临时文件如何生成。
(1)、这个属性只有在Chart.ImageStorageMode=UseImageLocation才有效。
(2)、
当Chart.RenderType=ImageTag时,图形文件生成后会在服务端保存。文件格式和扩展名由Chart.ImageType指定。而文
件名则可以是静态不变或动态变化的。静态就是使用一个固定名称,动态则使用一个随机名称,可以通过“#”标记来选择使用GUID或指定数字序列来确定一个
唯一的文件命名。
(3)、默认值ChartPic_#SEQ(300,3)的含义是
(4)、ImageLocation命名举例,假设Chart.ImageType=Png
属性值                生成图形文件URL              
---------------------------------------------------------------- 
ChartPic_#SEQ(300,3)  ChartPic_000003.png?d155074d-2120-49db-a95c-6a4a61911315           
ChartPic              ChartPic.png?27194803-a8a9-4c3e-81a7-5534a279dbe0  
ChartPic#NOGUIDPARAM  ChartPic.png
(5)、默认值表示最多允许保存300个文件,代表3秒种,表示向事件日志中写入警告信息的时间限制。

三、web.config关联配置项
只有当Chart.ImageStorageMode=UseHttpHandler时,web.config中的配置才会生效。即指定由HTTP处理程序来存储图形文件时,web.config中的配置才会生效。
例如:
<add
key="ChartImageHandler"
value="storage=file;timeout=20;dir=c:/TempImageFiles/;deleteAfterServicing=false;
webDevServerUseConfigSettings=false" />
显然,其中c:/TempImageFiles/就是HTTP处理程序来存储图形文件的目录。
deleteAfterServicing,在图片被浏览器成功下功下载后,确定服务器上图片是否删除,默认值为false。
但请注意,如果不指定deleteAfterServicing,图片是不会被存储为文件的,应当只是暂存在内存中。
webDevServerUseConfigSettings,当在VS开发服务器中,即运行在完全信任级别(full trust level)环境时,决定生成的图片是否被保存在内存中。

四、注意文件夹的权限
只要在服务端生成图形文件,无论存储在哪个目录下,ASP.NET帐户都需要拥有该目录的写入权限。

[转] .NET 3.5中MSChart组件的ImageLocation属性含义的更多相关文章

  1. 代码中修改组件的margin属性

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_ ...

  2. android中四大组件之间相互通信

    好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...

  3. Android ScrollView中的组件设置android:layout_height="fill_parent"不起作用的解决办法

    例子,在ScrollView下加入的组件,无论如何也不能自动扩展到屏幕高度. 布局文件. [html] <?xml version="1.0" encoding=" ...

  4. 如何在Vue2中实现组件props双向绑定

    Vue学习笔记-3 前言 Vue 2.x相比较Vue 1.x而言,升级变化除了实现了Virtual-Dom以外,给使用者最大不适就是移除的组件的props的双向绑定功能. 以往在Vue1.x中利用pr ...

  5. java中解决组件重叠的问题(例如鼠标移动组件时)

    java中解决组件覆盖的问题!     有时候在移动组件的时候会出现两个组件覆盖的情况,但是你想让被覆盖的组件显示出来或者不被覆盖! 在设计GUI时已经可以定义组件的叠放次序了(按摆放组件的先后顺序) ...

  6. Android中Intent组件详解

    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...

  7. LotusPhp中配置文件组件LtConfig详解

    LotusPhp中配置文件组件LtConfig是约定的一个重要组成部分,适用于多个场景,多数的LotusPhp组件如数据库,缓存,RBAC,表单验证等都需要用到配置组件,LtConfig配置组件也是L ...

  8. [置顶] Flex中Tree组件无刷新删除节点

    在Tree组件中经常要删除某个节点,而删除之后重新刷新加载该Tree组件会影响整个操作效果和效率,因此,无刷新删除就比较好,既删除了节点也没有刷新tree,而使Tree的状态处于删除之前的状态. 无刷 ...

  9. JS中checkbox组件的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. poj2774 Long Long Message(后缀数组)

    [题目链接] http://poj.org/problem?id=2774 [题意] A & B的最长公共子序列. [思路] 拼接+height数组.将AB拼接成一个形如A$B的串,枚举hei ...

  2. UITextField知多少

    //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...

  3. ss sp行情

    SS Securities Standard SP Securities Premium 優行情質 Securities Standard (SS), Premium (SP), FullTick S ...

  4. oracle 32位和64位的问题

  5. 原生 JavaScript 代码和Jquery实现对比

    下面就带大家一起看看在 IE 浏览器环境中如果使用原生 JavaScript 代码实现 jQuery 中的功能.如果你打算自己开发一个小的基础框架,可以好好参考一下这些代码的实现. 本文转载:http ...

  6. Linux在山Windows共享文件夹

    $ sudo mount.cifs //windows-ip/shared  /media/ -o user=username password=password 该命令挂载Windows在下面sha ...

  7. AIDL跨进程通信

    Android跨进程通信会用到AIDL,当然跨进程通信不一定要用AIDL,像广播也是可以的,当然这里用到AIDL相对比较安全一些: AIDL允许传递基本数据类型(Java 的原生类型如int/long ...

  8. Dhroid框架笔记(IOC、EventBus)

    dhroid 目前包含了6大组件供大家使用1.Ioc容器: (用过spring的都知道)视图注入,对象注入,接口注入,解决类依赖关系2.Eventbus: android平台事件总线框架,独创延时事件 ...

  9. ASP.NET5 静态文件

    静态文件,包括HTML文件,CSS文件,图像文件和JavaScript文件,它是一个应用里所包含的资源. 1. 提供静态文件 默认的,静态文件存储在你的webroot目录下面,webroot的路径定义 ...

  10. Oracle 创建分页存储过程(转帖)

    原贴地址:http://19880614.blog.51cto.com/4202939/1316560 ps:源代码还有很多错误,我修改了 ------------------------------ ...