Bitmap 直接赋给PictureBox失真

时间:2022-08-28 16:22:39
环境:VS2005 C# WinForm

  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,则画质完好。但这样速度上慢很多。

图片失真的样子:
Bitmap 直接赋给PictureBox失真

原图在:
http://newspic.cn.yahoo.com/newspic/bbs/2176/

请教如何能不失真地把Bitmap 直接赋给PictureBox?

5 个解决方案

#1


1、picturebox的宽高比例最好和图片的宽高比一样。
2、设置SizeMode = PictureBoxSizeMode.StretchImage

#2


你的屏幕是多少色的

#3


PictureBoxSizeMode.StretchImage
设了没用

我电脑硬件没问题 ,512显卡,三星19宽屏

#4


提示:

那个图像是24位的

#5


PixelFormat.Format24bppRgb

设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。

是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?

#1


1、picturebox的宽高比例最好和图片的宽高比一样。
2、设置SizeMode = PictureBoxSizeMode.StretchImage

#2


你的屏幕是多少色的

#3


PictureBoxSizeMode.StretchImage
设了没用

我电脑硬件没问题 ,512显卡,三星19宽屏

#4


提示:

那个图像是24位的

#5


PixelFormat.Format24bppRgb

设为这个参数,果然不失真了。默认值或PixelFormat.Format32bppArgb会失真。

是不是截屏截出来的图像都是24位?我该如何设置PixelFormat参数?