好吧,我是第一次使用 C#,并且出现了标题中的问题。它类似于 stackoverflow 中的其他问题,但是我正在使用他们的答案建议的修复程序,但仍然无法正常工作。
我想保存视频的前 50 帧,我正在这样做(_frame_nr 增量和循环不在此范围内,但它们与问题无关,因为该部分有效)
if (_frame_nr < 50){
Bitmap _curr_frame = new Bitmap(_width, _height, _stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, (IntPtr)curr_frame);
_curr_frame.Save("C:\\curr_frame\\frame_nr_" + _frame_nr + ".png");
prevFrames.Add(_curr_frame); }
此代码有效,因为前 50 个正确帧已保存在文件夹中。
但是紧接着我做这个循环
for (int y = 0; y < 50; y++)
{
Bitmap _prev_frame = prevFrames[y];
_prev_frame.Save("C:\\_prev_frame\\frame_nr_" + y + ".png");
}
所有的框架都被最后一个取代。
现在我知道在列表中添加引用而不是复制,但是我检查的所有建议都说,通过为每个元素创建一个内部对象的新实例将使其引用每个不同的元素。所以我不知道我做错了什么,也许我错过了什么?