-5

C#で、空の画像を取得して、たとえば線を引く方法はありますか?可能であれば、これを行う方法の例を教えていただけますか?私は以前にこのようなものを見たことがありますが、それを行う方法についてはあまりよくわかりません。オンラインで見つけたすべての場所で、既存の画像からそれを実行し、それを描画していました。何もロードする必要はありません。作業中のインターフェイスにとってはちょっといいことです。コードを要求しているように聞こえますが、要求しているのは、何もロードせずに画像を描画する方法だけです。

4

2 に答える 2

1

GDI +(より具体的にはGraphicsクラス)を使用できます。

// Load an existing image into a Graphics object
using (var image = Image.FromFile(@"c:\work\input.png"))
using (var gfx = Graphics.FromImage(image))
{
    // Draw a line on this image from (0x0) to (50x50)
    gfx.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);

    // save the resulting Graphics object to a new file
    using (var output = File.OpenWrite(@"c:\work\output.png"))
    {
        image.Save(output, ImageFormat.Png);
    }
}

アップデート:

また、新しい画像を作成する場合は、次のようにします。

// Create a new image 50x50 in size
using (var image = new Bitmap(50, 50))
using (var gfx = Graphics.FromImage(image))
{
    // Draw a line on this image from (0x0) to (50x50)
    gfx.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);

    // save the resulting Graphics object to a new file
    using (var output = File.OpenWrite(@"c:\work\output.png"))
    {
        image.Save(output, ImageFormat.Png);
    }
}
于 2013-01-25T11:17:23.807 に答える
1

フォーム上にパネルを作成する必要があります。バッファはBitmapです。

次に、panel1_MouseDown-Eventを使用して何かを描画します。

     using (Graphics bufferGrph = Graphics.FromImage(buffer))
        {
            bufferGrph.DrawRectangle(new Pen(Color.Blue, 1), 1, 1, 100, 100); //Example
        }   
        panel1.Invalidate();

次に、panel1_Paint-イベントを使用して、次のコマンドでパネルに画像を描画します。

e.Graphics.DrawImageUnscaled(buffer, Point.Empty);

パネルのコンテンツを保存するには、コントロールを使用します。

Bitmap bmp = new Bitmap(panel1.Width,panel1.Height);
panel1.DrawToBitmap(bmp, panel1.Bounds);
bmp.Save(@"MYPATH HERE");
于 2013-01-25T11:21:43.627 に答える