彩票走势图

如何将Visifire for Silverlight/WPF所生成的图表转换成图片

原创|其它|编辑:郝浩|2012-10-18 13:29:01.000|阅读 812 次

概述:如何用VisifireChart进行图表到图片的转换,下面来看一种比较取巧的方法。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

目前我们用VisifireChart来作为图表呈现,这个软件同时支持Silverlight和WPF。我们来看一下,如何在Visifire for Silverlight中进行图表到图片的转换:

Visifire for Silverlight/WPF 图表转图片

所以实现图表转图片可以分以下几步走。

一、写一份WPF客户端程序

思路很简单

1.1、定义一个定时器,然后检测某目录的xml文件,这里暂定目录名字为chart。

timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 2);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
void timer_Tick(object sender, EventArgs e)
{
string[] files = System.IO.Directory.GetFiles

(AppDomain.CurrentDomain.BaseDirectory + "chart");
if (files.Length > 0)
{
}
}

1.2、如果有的话,则进行反序列化成Chart对象进行呈现。

void timer_Tick(object sender, EventArgs e)
{
string[] files = System.IO.Directory.GetFiles

(AppDomain.CurrentDomain.BaseDirectory + "chart");
if (files.Length > 0)
{
LoadXml(files[0]);
}
}
private void LoadXml(string xmlFile)
{
XmlDocument doc = new XmlDocument();
doc.Load(xmlFile);
StringReader stringReader = new StringReader(doc.InnerXml);
XmlReader xmlReader = XmlReader.Create(stringReader);
Chart chart = XamlReader.Load(xmlReader) as Chart;
chart.AnimationEnabled = false;
stringReader.Close();
xmlReader.Close();
this.Content=chart;
}

1.3、呈现好以后进行截图

void timer_Tick(object sender, EventArgs e)
{
string[] files = System.IO.Directory.GetFiles

(AppDomain.CurrentDomain.BaseDirectory + "chart");
if (files.Length > 0)
{
LoadXml(files[0]);
PrintPicture(files[0]);
}
}
private void PrintPicture(string fileName)
{
this.Dispatcher.BeginInvoke(new Action(() =>
{
int Height = (int)this.ActualHeight;
int Width = (int)this.ActualWidth;
RenderTargetBitmap bmp = new RenderTargetBitmap(Width, Height, 96, 96

, PixelFormats.Pbgra32);
bmp.Render(this);
string file = "C:\\temp\\a.jpg";
BitmapEncoder encoder;
encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stm = File.Create(file))
{
encoder.Save(stm);
}
File.Delete(fileName);
}), System.Windows.Threading.DispatcherPriority.Render);
}

1.4、转换成图片完毕则删除此xml文件。

二、将编译好的wpf程序放置在web根目录,然后启动此程序

三、使用ajax交互将当前显示出来的xml传送到chart目录下

前端

$.ajax({
type: "POST",
url: "ajaxServer.aspx",
data: "name=" + vChart.dataUri,
success: function(msg) {
alert("Success");
}
});

后端

拷贝xml文件或者其他处理方式把xml弄到chart目录下

protected void Page_Load(object sender, EventArgs e)
{
File.Copy(Server.MapPath(this.Request["name"]), Server.MapPath

("../chart/" + this.Request["name"]));
}

注意点:转换的时候注意wpf和silverlight的命名空间。也算是一个方法,对付图表,生成图片是绰绰有余的,小技巧分享一下 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:ccidnet

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP