制作和绘制图像C#?

时间:2013-01-25 11:12:35

标签: c# .net winforms image

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

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

您需要在表单上创建一个面板。 缓冲区是Bitmap

然后使用panel1_MouseDown - 事件来绘制内容:

     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");