屏幕截图窗口窗体
Posted
技术标签:
【中文标题】屏幕截图窗口窗体【英文标题】:screenshot windowsform 【发布时间】:2018-11-12 16:03:07 【问题描述】:我在 windows 窗体上绘制图形,而不是在图片框上。我想将我的 Windows 窗体的视图保存到桌面上的特殊文件夹中。我不知道制作屏幕截图是否更好,或者我应该尝试将其保存为我的文件夹中的图像(位图)。 通常我尝试了这两个选项,但它不起作用:( 我把我的尝试之一放在这里...
public void Form1_Paint(object sender, PaintEventArgs e)
int x1, y1, x2, y2;
Random losowa1 = new Random();
x1 = losowa1.Next(0, 200);
y1 = losowa1.Next(120, 300);
x2 = losowa1.Next(300, 480);
y2 = losowa1.Next(120,300);
e.Graphics.FillRectangle(Brushes.Black, x1, y1, 100, 100);
e.Graphics.FillEllipse(Brushes.Black, x2, y2, 100, 100);
Bitmap bitmap = new Bitmap(this.Width, this.Height);
DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
bitmap.Save("@C:\\Desktop", ImageFormat.Jpeg);
// MessageBox.Show("saved");
System.Threading.Thread.Sleep(1000);
this.Close();
和
private void button1_Click(object sender, EventArgs e)
for (int i = 0; i < 3; i++)
Form1 OknoStart = new Form1();
OknoStart.ShowDialog();
【问题讨论】:
Capture screenshot of active window?的可能重复 你为什么要在表格上画画?在位图上绘制并将其显示为表单的背景图像似乎更明智。另请注意,无论您认为Thread.Sleep(1000);
在那里做什么,它都不是。它只会阻塞你的 UI 线程。使用适当的事件来表示操作完成。
【参考方案1】:
试试这个
int i;
public Form1(int i)
InitializeComponent();
this.i = i;
private void Form1_Load(object sender, EventArgs e)
using (Bitmap bmp = new Bitmap(this.Width, this.Height))
this.DrawToBitmap(bmp, new Rectangle(Point.Empty, bmp.Size));
bmp.Save(@"C:\Users\User\Desktop\sample" + i+".png", ImageFormat.Png);
private void Form1_Paint(object sender, PaintEventArgs e)
int x1, y1, x2, y2;
Random losowa1 = new Random();
x1 = losowa1.Next(0, 200);
Random losowa2 = new Random();
y1 = losowa2.Next(0, 480);
Random losowa3 = new Random();
x2 = losowa1.Next(300, 500);
Random losowa4 = new Random();
y2 = losowa2.Next(0, 480);
e.Graphics.FillRectangle(Brushes.Black, x1, y1, 100, 100);
e.Graphics.FillEllipse(Brushes.Black, x2, y2, 100, 100);
System.Threading.Thread.Sleep(2000);
this.Close();
private void button1_Click(object sender, EventArgs e)
for (int i=0;i<3;i++)
Form1 form1 = new Form1(i);
form1.ShowDialog();
【讨论】:
感谢您的回答我尝试这样做但文件夹仍然是空的:(我检查了权限,它似乎很好:( 尝试像这样保存图片路径 D:\Stackimage\ 尝试我的新更新答案文件夹路径,例如“C:\Users\User\Desktop\sample”+ i+“.png” 第一个路径有效,但前提是我使用您的代码制作新项目。我是我的,它不行。我正在尝试修复它。再次感谢您 我认为您的文件夹路径错误...试试这个 C:\Users\User\Desktop\sample 一段时间“用户”文件夹名称不同以上是关于屏幕截图窗口窗体的主要内容,如果未能解决你的问题,请参考以下文章
C#制作截图软件时,怎样不截取软件窗口本身? 看下图:软件自身也被截下来了