-5

在 C# 中有什么方法可以拍摄空图像并在其上画线吗?如果可能的话,你能告诉我一个如何做到这一点的例子吗?我以前见过这样的东西,但我不太了解如何做到这一点,而且我在网上发现的所有地方都是从预先存在的图像中做的,然后在它上面绘制。我不想加载任何东西,只是我正在处理的界面的一个不错的小东西。我知道这听起来像是我在要求代码,但我所要求的只是如何在不加载任何内容的情况下绘制图像。

4

2 回答 2

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 回答
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 回答