private void button2_Click(object sender, EventArgs e)
{
Bitmap screenBitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(screenBitmap);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
g.Dispose();
this.pictureBox1.SizeMode = PictureBoxSizeMode.Normal;
//Image myimage = Image.FromHbitmap(screenBitmap.GetHbitmap());
this.pictureBox1.Image = screenBitmap;// myimage;
//screenBitmap.Save("C:\\a.bmp", ImageFormat.Bmp);
//this.pictureBox1.ImageLocation = "C:\\a.bmp";
}
截图后,如果直接把 Bitmap 赋给pictureBox,显示出来图片在其黑色部分会出现一些白色絮状东西。
如果把图片先保存至磁盘再载入pictureBox,则画质完好。但这样速度上慢很多。
图片失真的样子:
原图在:
http://newspic.cn.yahoo.com/newspic/bbs/2176/
请教如何能不失真地把Bitmap 直接赋给PictureBox?
5 个解决方案
#1
1、picturebox的宽高比例最好和图片的宽高比一样。
2、设置SizeMode = PictureBoxSizeMode.StretchImage
2、设置SizeMode = PictureBoxSizeMode.StretchImage
#2
你的屏幕是多少色的
#3
PictureBoxSizeMode.StretchImage
设了没用
我电脑硬件没问题 ,512显卡,三星19宽屏
设了没用
我电脑硬件没问题 ,512显卡,三星19宽屏
#4
提示:
那个图像是24位的
那个图像是24位的
#5
PixelFormat.Format24bppRgb
设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。
是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?
设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。
是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?
#1
1、picturebox的宽高比例最好和图片的宽高比一样。
2、设置SizeMode = PictureBoxSizeMode.StretchImage
2、设置SizeMode = PictureBoxSizeMode.StretchImage
#2
你的屏幕是多少色的
#3
PictureBoxSizeMode.StretchImage
设了没用
我电脑硬件没问题 ,512显卡,三星19宽屏
设了没用
我电脑硬件没问题 ,512显卡,三星19宽屏
#4
提示:
那个图像是24位的
那个图像是24位的
#5
PixelFormat.Format24bppRgb
设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。
是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?
设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。
是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?