0

在下面的代码中,我收到一条错误消息bitmap = newBitmap,说它不能分配位图,因为它是一个using变量。如何调整位图的大小?

public static Bitmap ResizeBitmap(Bitmap b, int nWidth, int nHeight)
{
            Bitmap result = new Bitmap(nWidth, nHeight);
            using (Graphics g = Graphics.FromImage((Image)result))
                g.DrawImage(b, 0, 0, nWidth, nHeight);
            return result;
}

....

using (var bitmap = new Bitmap(_width, _height, _width * 3, PixelFormat.Format24bppRgb, pBuffer))
{
    if (!this.Secondpass)
    {
        long[] HistogramValues = Form1.GetHistogram(bitmap);
        Form1.Histograms.Add(HistogramValues);
        long t = Form1.GetTopLumAmount(HistogramValues, 1000);
        Form1.averagesTest.Add(t);                            
    }
    else
    {                    
        if (_frameId > 0)
        {
            double t = Form1.averagesTest[_frameId] / 1000.0 - Form1.averagesTest[_frameId - 1] / 1000.0;
            w.WriteLine("averagesTest >>>  " + t);
            double tt = framesCounts();
            if (_frameId == framesCounts())
            {
                w.Close();
            }
            if (Form1.averagesTest[_frameId] / 1000.0 - Form1.averagesTest[_frameId - 1] / 1000.0 > 0.0) 
            {
                count = 6;
            }

            if (count > 0)
            {
                Bitmap newBitmap = ResizeBitmap(bitmap, 10, 10);
                bitmap.Dispose();
                bitmap = newBitmap;
                bitmap.RotateFlip(RotateFlipType.Rotate180FlipX);
                bitmap.Save(Path.Combine(_outFolder, _frameId.ToString("D6") + ".bmp"),ImageFormat.Bmp);
                count --;
            }
        }
    }
}
4

1 回答 1

1

您正在尝试重新分配语句 bitmap中定义的变量。根据 C# Specification,这是一个错误:using

在资源获取中声明的局部变量是只读的,并且必须包含初始化程序。如果嵌入语句尝试修改这些局部变量(通过赋值或 ++ 和 -- 运算符)或将它们作为 ref 或 out 参数传递,则会发生编译时错误。

于 2012-10-30T23:08:45.060 回答