屏幕截图失真,求方案

大狗狗 2011-08-13 10:15:41
环境:VS2005 C# WinForm

截屏代码:

private void button2_Click(object sender, EventArgs e)
{
Bitmap screenBitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(screenBitmap);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
g.Dispose();
this.pictureBox1.Image = screenBitmap;
}


除了这种方法,网上所流传的API法我也试了,它们都存在一个问题:图像黑色部分会出现白色絮状失真,如下图所示:


求解决办法
...全文
362 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
管理员你生孩子没屁眼!快点把我账号注销了,不然我就骂死你!
一休宗纯 2011-08-14
  • 打赏
  • 举报
回复
楼主你好:我已经找到原因了.
1,截图并没有错,因为你如果 save 至文件,可以双击打开文件,那文件并没有颜色的错误.
2,问题出在PictureBox
你应该运行一句 pictureBox1.BackColor = Color.Black; 显示就没问题了.


Bitmap screenBitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(screenBitmap);
g.CopyFromScreen(20, 80, 0, 0, Screen.PrimaryScreen.Bounds.Size);
g.Dispose();
screenBitmap.Save("d:\\a.jpg");  // 保存的文件,打开显示OK

this.pictureBox1.Image = screenBitmap;
this.pictureBox1.BackColor = Color.Black;  // 这里如果设置为Color.Red,就会看到那些失真的部分成了红色.
大狗狗 2011-08-14
  • 打赏
  • 举报
回复
一休宗纯 2011-08-13
  • 打赏
  • 举报
回复
楼主,我用了你相同的代码,没有出现任何问题哦!

要不你把你要截的原图发一份过来?

我是用的 vs2010
stszd604 2011-08-13
  • 打赏
  • 举报
回复
帮顶 1111111111
大狗狗 2011-08-13
  • 打赏
  • 举报
回复
自己顶
tiger_yxq 2011-08-13
  • 打赏
  • 举报
回复
没有用到,顶之

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧