我想创建多个200x200图像,并以数字为中心,并将相应的文件名自动保存到文件夹中。就是这样,仅此而已。
我认为最好用一个影像盒试一试并用循环书写它,但我无处可去。有什么想法吗?
答案 0 :(得分:2)
你走在正确的轨道上,萌芽。然而;要完成你想要的,你需要调用 System.Drawing 命名空间中提供的'Graphics'类。
您想要完成的任务非常简单。
首先循环浏览您想要创建的图像
让我们说你想要5张图片
...调用for循环!
for (int I = 0; I < 5; I++) { }
在循环内部,我们想要创建一个可用于编辑的200x200图像。 我更喜欢'Bitmap'类来实现这一目标。
创建Bitmap后,我会为它创建图形。 然后我将在约。中心。如果你想要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
}
我还没有尝试过这段代码,但我认为它有效。可能需要进行少量修改:)
答案 1 :(得分: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
}
}
答案 2 :(得分: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
,Graphics
和Font
个实例。这就是我的方法中的using语句。