at System.Drawing.TextureBrush..ctor(Image image, WrapMode wrapMode) at System.Windows.Forms.ControlPaint.DrawBackgroundImage(Graphics g, Image backgroundImage, Color backColor, ImageLayout backgroundImageLayout, Rectangle bounds, Rectangle clipRect, Point scrollOffset, RightToLeft rightToLeft) at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle, Color backColor, Point scrollOffset) at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle) at System.Windows.Forms.Control.OnPaintBackground(PaintEventArgs pevent) at System.Windows.Forms.ScrollableControl.OnPaintBackground(PaintEventArgs e) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
问题出现:
设置控件的背景色,并设置了通过wndproc触发刷新(别的没试)
使用System.IO.MemoryStream Image.FromStream(ms);获取图片
报上面的错误。
内存不足一般是空指针或者出现野指针。
可能的原因是TextureBrush使用ms的内存地址导致的。所以解决方法是使用MemoryStream
或者使用new image 再drawimage重新制作一张新的图片。
我使用下面的方法
System.IO.File.WriteAllBytes(path, data);
return Image.FromFile(path);