【问题标题】:Making and drawing an image C#? [closed]制作和绘制图像 C#? [关闭]
【发布时间】:2013-01-09 08:19:09
【问题描述】:

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

【问题讨论】:

  • 我所要求的只是有人帮我弄清楚这一切。
  • Arun C.B 我遇到的问题是我不想加载任何图像,我只想绘制一张没有任何预制数据的图像。
  • Google System.Drawing 命名空间。

标签: c# .net winforms image


【解决方案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");

【讨论】:

    【解决方案2】:

    您可以使用 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 不错的答案@DarinDimitrov 一如既往
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多