当我在调试器中运行程序时,我得到的是灰色的大“X” 然而,这只发生在Heatmaps上。我能绘制线图。 我对OxyPlot完全不熟悉(我已经很喜欢)了,我希望有一些东西可以用来绘制HeatMaps。
OxyPlot热图的文档有点薄。
我错过了什么?
这是我的MainPage.xaml:
public void GetStream(Stream imageData)
{
try
{
byte[] buffer = new byte[10000];
imageData.Read(buffer, 0, 10000);
FileStream f = new FileStream("D:\\FileUpload\\SubjectFront.JPG", FileMode.OpenOrCreate);
f.Write(buffer, 0, buffer.Length);
f.Close();
imageData.Close();
}
catch (Exception ex)
{
}
}
在MainPage中,xaml.cs我说:
<Page
...
xmlns:oxy="using:OxyPlot.Windows"
mc:Ignorable="d">
<Page.DataContext>
<local:MainViewModel/>
</Page.DataContext>
<Grid x:Name="LayoutRoot" Background="White">
<oxy:PlotView x:Name="MyHeatMap" Model="{Binding plotModel1}"/>
</Grid>
</Page>
答案 0 :(得分:0)
我今天遇到了同样的问题。除了热图之外,一切正常。使用热图时,程序冻结。我尝试了这些示例并调试了OxyPlot源代码,以了解导致此错误的原因。事实证明,将MemoryStream转换为IRandomAccessStream时会出现问题。这是执行此操作的源代码:
private static async Task<IRandomAccessStream> ConvertToRandomAccessStream(MemoryStream memoryStream)
{
var randomAccessStream = new InMemoryRandomAccessStream();
var outputStream = randomAccessStream.GetOutputStreamAt(0);
var dw = new DataWriter(outputStream);
var task = Task.Run(() => dw.WriteBytes(memoryStream.ToArray()));
await task;
await dw.StoreAsync();
await outputStream.FlushAsync();
return randomAccessStream;
}
调用var task = Task.Run(() => dw.WriteBytes(memoryStream.ToArray()));
时程序会冻结。但是我不知道为什么这不起作用...作为一种解决方法我移动dw.WriteBytes(memoryStream.ToArray())
并且在没有线程的情况下执行此操作然后工作正常并且热图按预期显示。然后,您必须在设置BitmapImage的源时等待ConvertToRandomAccessStream(MemoryStream memoryStream)
调用。
有没有人知道为什么DataWriter的WriteBytes方法在任务中运行时会导致冻结?
编辑:我正在使用OxyPlot Version 2015.1.893.0进行Windows应用商店应用