主要代码:
private void btn_CutScreen_Click(object sender, EventArgs e)
{
if (this.pic_MainScreen.Image != null)
{
this.pic_MainScreen.Image.Dispose();
this.pic_MainScreen.Image = null;
}
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (Bitmap bit = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height))
{
using (Graphics g = Graphics.FromImage(bit))
{
g.CopyFromScreen(0, 0, 0, 0, bit.Size);
g.Dispose();
}
bit.Save(ms, ImageFormat.Jpeg);
bit.Save("d:\\test\\" + DateTime.Now.ToString("HHmmss") + ".jpg");
}
this.pic_MainScreen.Image = Image.FromStream(ms);
ms.Close();
ms.Dispose();
}
点一次按钮,截取整个屏幕图片,并正常显示在picturebox中.
发生问题:如果多次点击按钮,picturebox中显示成这样了.(红色框内)这个图片是正常截图后保存的,也就是说方法应该没错.为什么图片出现层叠了呢?
private void btn_CutScreen_Click(object sender, EventArgs e)
{
if (this.pic_MainScreen.Image != null)
{
this.pic_MainScreen.Image.Dispose();
this.pic_MainScreen.Image = null;
}
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (Bitmap bit = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height))
{
using (Graphics g = Graphics.FromImage(bit))
{
g.CopyFromScreen(0, 0, 0, 0, bit.Size);
g.Dispose();
}
bit.Save(ms, ImageFormat.Jpeg);
bit.Save("d:\\test\\" + DateTime.Now.ToString("HHmmss") + ".jpg");
}
this.pic_MainScreen.Image = Image.FromStream(ms);
ms.Close();
ms.Dispose();
}
点一次按钮,截取整个屏幕图片,并正常显示在picturebox中.
发生问题:如果多次点击按钮,picturebox中显示成这样了.(红色框内)这个图片是正常截图后保存的,也就是说方法应该没错.为什么图片出现层叠了呢?
if (this.pic_MainScreen.Image != null)
{
this.pic_MainScreen.Image.Dispose();
this.pic_MainScreen.Image = null;
}
//另外
你的 using 不能都放一块吗?
你截取了你以前截取了你以前的把自己 藏起来 就行了hide 或者 visuable=false 搞完了再 蹦出来
而且你每次都把 图像 大小变了你把图像 size 模式变一变 再重复截取就就明白了