在wp8.1上使用复合变换进行缩放时访问违规

时间:2014-11-19 23:30:54

标签: c# windows-phone-8 windows-phone-8.1 scale

我为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。

0 个答案:

没有答案