提问人:JoseAyeras 提问时间:4/2/2019 更新时间:4/2/2019 访问量:55
如何将 BitmapSource 对象放入数组中而不会在函数范围之外变为 null?
How do I put a BitmapSource object into an array without it turning null outside function scope?
问:
简单地说......
private void LoadImage(object sender, EventArgs e){
String path = null;
Microsoft.Win32.OpenFileDialog oFD = new ...();
if(oFD.showDialog == true){
path = oFD.FileName;
result = new BitmapImage(new Uri(path));
Array.Resize(ref frames, frames.Length + 1);
frames.Append<BitmapSource>(result);
}
Refresh();
}
private void Refresh(){
BitmapSource bg = frames[curFrame]; //i.e. curFrame = 0;
}
我希望 bg 在调用 Refresh() 时不会为 null。我捕获了所有相关的异常,除了 bg 为 null,其中我不希望 bg 在程序执行时为 null。
答:
0赞
JoseAyeras
4/2/2019
#1
在这种情况下,调用 Array.Append(object) 是我出现问题的原因。我不知道它是做什么用的,但我假设(错误地)它将一个对象附加到任何数组的末尾。
我用以下内容替换了那行,我的代码按我的意图运行。
frames[frames.Length - 1] = result;
评论
0赞
Clemens
4/2/2019
更好的是:声明为可调整大小的集合:.然后只需致电frames
private List<BitmapSource> frames = new List<BitmapSource>();
frames.Add(result);
评论
List<BitmapSource>
Array.Resize
frames