0

我想创建一个控制台程序,该程序在运行时会创建一个带有一些以编程方式生成的图形的图像文件。它最终会读取一些带有数字参数的配置文件,然后通过算法创建图像。

我已经可以使用 HTML5 Canvas 和 Javascript 获得我想要的东西,使用诸如fillRect()等的绘图命令。

我已经查看了(过度)关于此的大量 .NET 文档,特别System.DrawingSystem.Windows.Media命名空间,但似乎有很多方法可以使用这些类,我什至不知道从哪里开始。

我打算做的一个伪代码(不是实际的类名!!!)示例如下:

RasterImage raster = new RasterImage(width, height);
context = raster.getContext();
context.fillColor = 'white';
context.DrawRectangle(x,y,w,h);
context.saveAsPng('result.png');

我相信实际的解决方案会比这更冗长,但这是我需要执行的当前工作流程。此外,如果这个类不能过多地依赖 WPF(它是一个控制台程序),但如果可能的话实际上使用更通用的绘图类,这将是很有趣的。提前致谢!

4

1 回答 1

3

使用System.Drawing.Bitmap班级及其随行人员,您可以非常简单地做到这一点:

static void Main(string[] args) {

    int width = 512;
    int height = 512;

    int x, y, w, h;
    x = y = 10;
    w = h = 100;

    using (Bitmap bmp = new Bitmap(width, height)) {
        using (Graphics g = Graphics.FromImage(bmp)) {

            g.FillRectangle(
                brush: new SolidBrush(
                    color: Color.Blue
                ),
                rect: new Rectangle(x, y, w, h)
            );

            g.DrawRectangle(
                pen: new Pen(
                    color: Color.Black, 
                    width: 3
                ),
                rect: new Rectangle(x, y, w, h)
            );

            bmp.Save(@"D:\result.png", ImageFormat.Png);

        }
    }

}

您将需要引用System.Drawing程序集并添加以下using子句:

using System.Drawing;
using System.Drawing.Imaging;
于 2013-03-02T14:24:00.330 回答