偷天换日让Silverlight支持图表转图片

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

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站建设,高端网页制作,对成都资质代办等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业seo优化优化,H5建站,响应式网站。

一.写一份WPF客户端程序

思路很简单

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

 
 
 
 
  1. timer = new DispatcherTimer();
  2. timer.Interval = new TimeSpan(0, 0, 2);
  3. timer.Tick += new EventHandler(timer_Tick);
  4. timer.Start();
  5. void timer_Tick(object sender, EventArgs e)
  6. {
  7. string[] files = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "chart");
  8. if (files.Length > 0)
  9. {
  10. }
  11. }

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

 
 
 
 
  1. void timer_Tick(object sender, EventArgs e)
  2. {
  3. string[] files = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "chart");
  4. if (files.Length > 0)
  5. {
  6. LoadXml(files[0]);
  7. }
  8. }
  9. private void LoadXml(string xmlFile)
  10. {
  11. XmlDocument doc = new XmlDocument();
  12. doc.Load(xmlFile);
  13. StringReader stringReader = new StringReader(doc.InnerXml);
  14. XmlReader xmlReader = XmlReader.Create(stringReader);
  15. Chart chart = XamlReader.Load(xmlReader) as Chart;
  16. chart.AnimationEnabled = false;
  17. stringReader.Close();
  18. xmlReader.Close();
  19. this.Content=chart;
  20. }

1.3呈现好以后进行截图

 
 
 
 
  1. void timer_Tick(object sender, EventArgs e)
  2. {
  3. string[] files = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "chart");
  4. if (files.Length > 0)
  5. {
  6. LoadXml(files[0]);
  7. PrintPicture(files[0]);
  8. }
  9. }
  10. private void PrintPicture(string fileName)
  11. {
  12. this.Dispatcher.BeginInvoke(new Action(() =>
  13. {
  14. int Height = (int)this.ActualHeight;
  15. int Width = (int)this.ActualWidth;
  16. RenderTargetBitmap bmp = new RenderTargetBitmap(Width, Height, 96, 96, PixelFormats.Pbgra32);
  17. bmp.Render(this);
  18. string file = "C:\\temp\\a.jpg";
  19. BitmapEncoder encoder;
  20. encoder = new JpegBitmapEncoder();
  21. encoder.Frames.Add(BitmapFrame.Create(bmp));
  22. using (Stream stm = File.Create(file))
  23. {
  24. encoder.Save(stm);
  25. }
  26. File.Delete(fileName);
  27. }), System.Windows.Threading.DispatcherPriority.Render);
  28. }

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

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

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

前端

 
 
 
 
  1. $.ajax({
  2. type: "POST",
  3. url: "ajaxServer.aspx",
  4. data: "name=" + vChart.dataUri,
  5. success: function(msg) {
  6. alert("Success");
  7. }
  8. });

后端

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

 
 
 
 
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. File.Copy(Server.MapPath(this.Request["name"]), Server.MapPath("../chart/" + this.Request["name"]));
  4. }

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

当前标题:偷天换日让Silverlight支持图表转图片
文章地址:http://www.csdahua.cn/qtweb/news20/247020.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网