将 Win Form 上的区域保存为 BMP 或 Jpeg

Posted

技术标签:

【中文标题】将 Win Form 上的区域保存为 BMP 或 Jpeg【英文标题】:Save area on a Win Form as BMP or Jpeg 【发布时间】:2022-01-04 15:27:12 【问题描述】:

我正在尝试在 win 表单上绘制一个矩形,并保存选定的矩形 作为磁盘上的图像(bmp 或 jpeg)。但我对保存部分感到震惊。目前我可以画矩形 并给我矩形作为mRect 变量

我已经通过谷歌搜索和各种文章努力但徒劳无功。 我当前的表单事件代码是:

    Point selPoint;
    Rectangle mRect;

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        
            selPoint = e.Location;
        


        private void Form1_MouseMove(object sender, MouseEventArgs e)
        
            if (e.Button == MouseButtons.Left)
            
                Point p = e.Location;
                int x = Math.Min(selPoint.X, p.X);
                int y = Math.Min(selPoint.Y, p.Y);
                int w = Math.Abs(p.X - selPoint.X);
                int h = Math.Abs(p.Y - selPoint.Y);
                mRect = new Rectangle(x, y, w, h);
                this.Invalidate();
            
        

        private void Form1_Paint(object sender, PaintEventArgs e)
        
            e.Graphics.DrawRectangle(Pens.Blue, mRect);
        

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        
          // ??? 
        

【问题讨论】:

相关:***.com/questions/12909905/saving-image-to-file 您要保存什么:一个简单的矩形或表单中的一个区域?它会包含您绘制或控制的东西还是两者兼而有之? - 获取表单或控件内容到位图的常用方法是 DrawToBitmap。查一下。周围有很多例子。一旦你有了它 bmp.Save(..) 就可以了,也许用 png 作为文件格式来保持它 crips .. 我需要在表单的任何位置绘制矩形,从而将裁剪后的图像保存为任何常见的图像文件格式 @DanielA.White 不,先生,那是在做一些不同的事情。我需要用鼠标在表单上绘制一个矩形,这已经按照我的代码完成了。然后我需要将该选定区域保存为 jpeg 或 bmp 等。 不,它可以从任何控件或表单中调用。 【参考方案1】:

在您的表单中使用RectangleToScreen() 将您的选择矩形从客户端坐标转换为屏幕坐标:

Rectangle screenRC = this.RectangleToScreen(mRect);
Bitmap bmp = new Bitmap(screenRC.Width, screenRC.Height);
using (Graphics g = Graphics.FromImage(bmp))

    g.CopyFromScreen(screenRC.Left, screenRC.Top, 0, 0, bmp.Size);

bmp.Save("a1.bmp");

【讨论】:

以上是关于将 Win Form 上的区域保存为 BMP 或 Jpeg的主要内容,如果未能解决你的问题,请参考以下文章

python将RGBA图像保存为BMP文件

将特定窗口的屏幕截图保存为窗口中的 bmp

Objective C - 将 UIImage 保存为 BMP 文件

如何将面板另存为 BMP

如何将图片保存为BMP格式?

如何将我的图像保存为 BMP 格式?