-3

我想创建多个以数字为中心的 200x200 图像,并将它们以相应的文件名自动保存到文件夹中。仅此而已,仅此而已。

我想最好用一个图像框试试这个,然后用一个循环在上面写,但我一无所获。有任何想法吗?

4

3 回答 3

2

你走在正确的轨道上,伙计。然而; 要完成您想要的,您需要调用System.Drawing命名空间中可用的“图形”类。

您想要完成的任务非常简单。

首先遍历您要创建的图像

假设你想要 5 张图片

...调用 for 循环!

for (int I = 0; I < 5; I++) { }

在循环内部,我们要创建一个可编辑的 200x200 图像。我更喜欢“位图”类来完成此任务。

创建位图后,我将为它创建图形。然后我将在大约绘制字符串。中心。如果你想要 100% 的中心,你可以使用 MeasureString 函数

最终代码:

for (int I = 0; I < 5; I++) {
    Bitmap B = new Bitmap(200, 200);
    Graphics G = Graphics.FromImage(B);
    G.DrawString(I.ToString(), this.Font, Brushes.Black, new PointF(100.0f, 100.0f);
    B.Save(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolders.Desktop), I + ".png"))) // Save on the desktop
}

我还没有尝试过这段代码,但我认为它可以工作。可能需要少量修改:)

于 2012-12-25T23:16:03.637 回答
0

抱歉只拿到了我的手机...

在伪代码中

创建一个循环。

Inside the loop create a bitmap
    // for i=0...
    // using (var BMP = new bitmap(dimensions))
    {
    // get graphics 
       Using (graphics g = graphics.fromimage(BMP))
    {
    // draw text
    Text render.draw text()
    // save image
    }
    }
于 2012-12-25T23:17:46.777 回答
0

这可能就像使用一种方法来完成艰苦的工作一样简单:

public void CreateImageWithText(string text)
{
    using (var b = new Bitmap(200, 200))
    {
        using (var g = new Graphics.FromImage(b))
        {
            using (var f = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
            {
                var strFormat = new StringFormat();
                strFormat.Alignment = StringAlignment.Center;
                strFormat.LineAlignment = StringAlignment.Center;

                g.DrawString(text, f, Brushes.Blue, new Rectangle(0,0,200,200), strFormat);
            }
        }
        b.Save("C:\\image.jpg", ImageFormat.Jpeg);
    }
}

然后在 for 循环中做:

for (var i = 0; i < 5; i++)
    CreateImageWithText(string.Format("{0}", i));

如果您计划多次调用它,请记住正确处理您Bitmap的 sGraphics和实例。Font这就是我的方法中的 using 语句的用途。

于 2012-12-25T23:21:26.803 回答