我有一个非常宽的 UserControl,60 x 50,000
它显示音频文件的波形。几个用户报告了一个 hresult 的崩溃,而谷歌0x88980406
没有提供任何有用的信息。该应用程序使用 .Net 4.0。
if (mainCanvas.Children.Count > 0)
mainCanvas.Children.Clear();
for (int i = 0; i < CurrentSong.waveformLines.Length; i++)
{
mainCanvas.Children.Add(CurrentSong.waveformLines[i]);
}
RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)Width, (int)Height, 96d, 96d, PixelFormats.Pbgra32);
// needed otherwise the image output is black
mainCanvas.Measure(new Size((int)Width, (int)Height));
mainCanvas.Arrange(new Rect(new Size((int)Width, (int)Height)));
renderBitmap.Render(mainCanvas);
Image img = new Image();
img.Source = renderBitmap;
if (mainCanvas.Children.Count > 0)
mainCanvas.Children.Clear();
mainCanvas.Children.Add(img);
我正在做的是将样本值绘制为线段,然后将它们全部添加到数组中并将它们放在画布上。然后我从画布创建位图,删除所有线段,然后将位图作为 Image 控件的源添加回画布。
它崩溃了mainCanvas.Children.Add(img)
;