我正在编写一个包含一些图像处理应用程序的拼图程序。 我有一个二维位图数组 - 数组中的每个元素都是一个难题。 我还有一个分别与bitmaps数组匹配的Image对象数组。 我使用内存流将位图对象转换为图像对象。
然而,当谈到将图片绘制到屏幕上时,似乎是图像在实际完成从流中读取之前被放入屏幕方式。它看起来像这样:
此外,当我尝试将我的图片分成更多部分时,它似乎工作正常。 像这样:
我的预感
这是相关代码:
BitmapImage [,] bitImageArr = new BitmapImage [vertPcs, horzPcs];
Image[,] imageArr = new Image[vertPcs, horzPcs];
MemoryStream ms = new MemoryStream();
for(int i=0; i<horzPcs;i++)
for (int j = 0; j < vertPcs; j++)
{
board.pieces[j, i].Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.Position = 0;
bitImageArr[j, i] = new BitmapImage();
bitImageArr[j, i].BeginInit();
bitImageArr[j, i].StreamSource = ms;
bitImageArr[j, i].EndInit();
imageArr[j,i] = new Image();
imageArr[j,i].Source = bitImageArr[j, i];
imageArr[j, i].SetValue(Grid.RowProperty, j);
imageArr[j, i].SetValue(Grid.ColumnProperty, i);
mainGrid.Children.Add(imageArr[j, i]);
}
mainGrid.ShowGridLines = true;
我的预感是它与线程同步有关,但我不确定并寻找更专业的答案。 有没有人知道它的原因是什么以及如何解决它?