自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

偷天換日讓Silverlight支持圖表轉圖片

開發(fā) 后端
Silverlight不支持打印,不支持將元素轉圖片,所以很麻煩。所以采取一種取巧的做法。目前我們用VisifireChart來作為圖表呈現(xiàn),這個開源軟件同時支持Silverlight和WPF,Silverlight不能辦到的事情,但WPF可以。

VisifireChart數(shù)據(jù)圖

 所以實現(xiàn)圖表轉圖片可以分一下幾步走.

一.寫一份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. }  

1.2如果有的話,則進行反序列化成Chart對象進行呈現(xiàn)

  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;  

1.3呈現(xiàn)好以后進行截圖

  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);  

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"]));  

注意點:轉換的時候注意wpf和silverlight的命名空間.也算是一個方法,對付圖表生成圖片是綽綽有余的.小技巧分享一下

【編輯推薦】

  1. 微軟7月發(fā)布Silverlight 3最終版 新增50多項功能
  2. 淺談Silverlight 3中在線與離線狀態(tài)檢測
  3. Silverlight 3數(shù)據(jù)存取功能簡析
  4. 圖解Silverlight 3的7個新功能
  5. 用Silverlight 3的位圖API實現(xiàn)可寫位圖
責任編輯:彭凡 來源: cnblogs
相關推薦

2009-02-17 14:22:40

Windows Emb

2009-12-30 15:08:04

Silverlight

2009-07-16 14:58:16

Windows Emb

2009-12-31 09:13:14

Silverlight

2009-12-30 14:44:04

Silverlight

2009-08-18 09:32:21

Silverlight

2009-03-31 08:36:10

Windows MobSilverlight移動OS

2009-12-31 14:25:19

Silverlight

2009-12-30 14:51:47

Silverlight

2009-02-19 09:42:01

SliverlightChrome微軟

2021-11-15 18:00:39

JVMJavaAgent代理

2009-12-31 10:43:48

Silverlight

2009-09-24 14:36:25

Moblin操作系統(tǒng)

2010-10-12 13:57:43

GoogleWebP

2011-05-16 10:41:43

MYSQL

2022-03-14 12:26:45

微信圖片開源

2020-10-14 12:29:51

開源圖表 開發(fā)

2009-07-30 14:40:15

Silverlight

2011-09-02 09:58:34

Silverlight

2009-10-21 16:53:46

MAC OS XWindows
點贊
收藏

51CTO技術棧公眾號