将 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的主要内容,如果未能解决你的问题,请参考以下文章