gpt4 book ai didi

c# - GrayScale(由 ColorMatrix 提供)导致 OutOfMemoryException。为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:16 26 4
gpt4 key购买 nike

我有 2 个表单,A 和 B。在表单 A 上,我单击一个按钮,图像被加载到位于表单 B 上的 PictureBox 中。并且,我想通过以下方式将 GrayScale 设置为此图像:

   public void SetGrayScale(PictureBox pb)
{
ColorMatrix matrix = new ColorMatrix(new float[][]
{
new float[] {0.299f, 0.299f, 0.299f, 0, 0},
new float[] {0.587f, 0.587f, 0.587f, 0, 0},
new float[] {0.114f, 0.114f, 0.114f, 0, 0},
new float[] { 0, 0, 0, 1, 0},
new float[] { 0, 0, 0, 0, 0}
});

Image image = (Bitmap)pb.Image.Clone();

ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(matrix);

Graphics graphics = Graphics.FromImage(image);

graphics.DrawImage(image,
new Rectangle(0, 0, image.Width, image.Height),
0,
0,
image.Width,
image.Height,
GraphicsUnit.Pixel,
attributes);

graphics.Dispose();

pb.Image = image;
}

当 PictureBox 在同一个窗体 (A) 上时,此代码可以正常工作。但是,当它位于表单 B 上时,会引发 OutOfMemoryException。为什么?

最佳答案

恐怕有更多问题/事情需要您调查,而不是实际答案:

  1. 如您对答案的评论 - Image 对象是否正确?

  2. 如果不是,则表示传递给此方法的 PictureBox 对象有问题,或者您无法正确访问 PictureBox 的图像。

我的第一个想法是线程,但这两种形式都应该在 UI 线程中。

关于c# - GrayScale(由 ColorMatrix 提供)导致 OutOfMemoryException。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com