数字を中心にした200x200の画像を複数作成し、対応するファイル名で自動的にフォルダに保存したい。それだけで、それ以上は何もありません。
これをイメージボックスで試してループで書き込むのが最善だと思いましたが、どこにも行きません。何か案は?
あなたは正しい方向に進んでいます、つぼみ。でも; 目的を達成するには、 System.Drawing名前空間で使用可能な「Graphics」クラスを呼び出す必要があります。
あなたがしたい仕事はとても簡単です。
作成したい画像を最初にループします
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
}
このコードはまだ試していませんが、機能すると思います。いくつかの変更が必要になる場合があります:)
携帯しか持ってなくてすみません…
疑似コードで
ループを作成します。
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
}
}
これは、面倒な作業を行うメソッドを持つのと同じくらい簡単です。
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 ステートメントの目的です。