如何让Silverlight支持图表转图片

发布时间:2021-12-01 16:19:00 作者:小新
来源:亿速云 阅读:298

这篇文章主要介绍如何让Silverlight支持图表转图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

如何让Silverlight支持图表转图片

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

一.写一份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的命名空间.也算是一个方法,对付图表生成图片是绰绰有余的.

以上是“如何让Silverlight支持图表转图片”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 让php支持mysql(或mariadb)
  2. 如何让Express支持async/await

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

silverlight

上一篇:高并发服务器逻辑瓶颈该如何处理

下一篇:CDN和游戏加速器有什么区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》