C#console app将图形生成为位图

时间:2012-05-10 16:18:09

标签: c# charts bitmap

我正在寻找一种从控制台应用程序(或NT服务)生成图形并导出到位图的方法。 这是一个后端进程,因此图形永远不会显示。刚保存到文件。 需要完全线程安全,因为我的控制台将多次并行执行此操作。

第三方组件很好,但免费更好:D

由于

4 个答案:

答案 0 :(得分:1)

MS Charting组件 - 免费:

http://archive.msdn.microsoft.com/mschart

答案 1 :(得分:1)

如果您熟悉GDI +,您可以在内存位图上绘制任何内容并将其保存到文件中。只要您不引用同一个文件或在多个线程中传递相同的源数据引用,您应该没问题。这是一个简短的示例,说明如何在程序上生成可以包装在控制台应用程序,Windows服务,Web服务等中的位图:

    Image bmp = new Bitmap(intWidth, intHeight);
    Graphics g = Graphics.FromImage(bmp);
    Rectangle r = new Rectangle(0, 0, intWidth, intHeight);

    g.DrawEllipse(Pens.Red, g.VisibleClipBounds);

    bmp.Save(strFileNameWithPath);

就生成图表而言,它将高度依赖于您的数学技能有多好,源数据的结构方式以及您想要制作的图表类型。肯定有图书馆可以做到这一点(Telerik浮现在脑海中),但我是一个“滚动你自己”的编码器。 :)

答案 2 :(得分:0)

使用excel互操作程序集。适用于图表,非常易于使用。您还可以对图表进行大量自定义和修改。

简单教程:

http://www.dotnetperls.com/excel-chart

这是您需要的程序集文件。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.11).aspx

答案 3 :(得分:0)

一般情况下,我们更愿意尝试一些问题并在遇到麻烦时提出问题。

那就是说,假设您想自己渲染图表(即不使用预先制作的图表包),我会看一下Bitmap class和Graphics类,特别是{{3} }。位图是图像的内存表示,Graphics类为您提供了绘制它的方法。