2009-12-01 43 views
19

Có thể tạo ảnh (jpeg, png, v.v.) bằng cách sử dụng thư viện Điều khiển biểu đồ của Microsoft mà không tạo lớp WinForm hoặc ASP.NET Control không? Tất cả các ví dụ tôi đã thấy sử dụng một thành phần điều khiển. Tôi cần tạo một thư viện chứa các phương thức đơn giản lấy dữ liệu để vẽ và trả về một hình ảnh biểu đồ mới. Ví dụ:Tạo ảnh bằng Thư viện điều khiển biểu đồ Microsoft .NET mà không cần điều khiển

public byte[] GeneratePlot(IList<SeriesData> series) 
{ 
    // generate and return JPEG 
} 
public void GeneratePlot(IList<SeriesData> series, Stream outputStream) 
{ 
    // generate JPEG and write to stream 
} 

Nếu nó không phải là có thể:

  1. bạn muốn giới thiệu tạo/xử lý mới biểu đồ kiểm soát mỗi khi người dùng gọi phương thức GeneratePlot()?
  2. có thư viện .NET khác (tốt nhất là miễn phí) mà bạn muốn giới thiệu không?

Cảm ơn

Trả lời

22

Vâng, đó là có thể:

using System.Windows.Forms.DataVisualization.Charting; 
using System.IO; 
... 
    public void GeneratePlot(IList<DataPoint> series, Stream outputStream) { 
     using (var ch = new Chart()) { 
     ch.ChartAreas.Add(new ChartArea()); 
     var s = new Series(); 
     foreach (var pnt in series) s.Points.Add(pnt); 
     ch.Series.Add(s); 
     ch.SaveImage(outputStream, ChartImageFormat.Jpeg); 
     } 
    } 
+0

Từ Chart thừa hưởng từ System.Windows.Forms.Control, là sẽ rất tốn kém để tạo ra và xử lý cho mỗi cuộc gọi chức năng? – dewald

+5

Chi phí của Kiểm soát là việc tạo thuộc tính Xử lý của nó. Nói cách khác: tạo cửa sổ. Điều đó không xảy ra ở đây. –

+0

Chúng ta có thể tạo một biểu đồ cây bằng cách này không? :) – AnhTriet

5

Nếu tất cả các bạn muốn là hình ảnh biểu đồ. Sau đó, bạn có thể sử dụng các điều khiển biểu đồ để lưu vào đĩa.

myChart.SaveImage("C:\mypic.png", System.Drawing.Imaging.ImageFormat.Png) 

Sau đó tải hình ảnh đó từ đĩa. Nếu các biểu đồ chỉ được tạo ra một lần thì bạn cũng có thể chỉ cần kiểm tra hệ thống tập tin cho hình ảnh đầu tiên và sau đó chỉ re-render nó nếu nó không tồn tại.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan