我为Windows Phone创建了一个手电筒应用程序。由于我已经访问相机以启用闪光灯,我认为这也是一个很好的功能,也允许用户查看预览帧,并能够放大以更好地看待事物。
我有一个带有复合变换的画布(因为我还需要旋转相机以匹配potrait模式)。我使用一个滑块(以夹点开始,但我想要一个手控制)来增加和减少画布的比例,有效地放大和缩小。到目前为止一直这么好,在Windows Phone 8(HTC 8x)上运行正常,我可以在滑块上疯狂,没有什么不好的事情发生。
在Windows Phone 8.1(Lumia 930)上,在移动滑块时看似随机的时刻,应用程序只是关闭,在调试输出中显示以下行:
程序' [3164] TaskHost.exe'已退出代码-1073741819(0xc0000005)'访问违规'。
我不知道如何找到原因,因为崩溃的时刻似乎有所不同,它只是始终与画布的缩放有关。我希望有人可以指出我正确的方向,所以我可以解决这个问题。
XAML中的画布:
<Canvas x:Name="viewfinderCanvas">
<Canvas.Background>
<VideoBrush x:Name="viewfinderBrush"/>
</Canvas.Background>
<Canvas.RenderTransform>
<CompositeTransform x:Name="rt" />
</Canvas.RenderTransform>
</Canvas>
我设置比例的代码:
private void Zoom_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (canZoom && !isFocusing)
{
zoomValue = Math.Round(Zoom.Value, 1);
rt.ScaleX = zoomValue * staticValue;
rt.ScaleY = zoomValue * staticValue;
ZoomValue.Text = zoomValue.ToString() + " x";
}
}
在主页的加载事件中,canzoom设置为true,并且在自动对焦时isFocusing设置为true。