尝试使用代码将PhotoCamera设置为VideoBrush的源时出现上述错误:
camera = new PhotoCamera();
var videoBrush = new VideoBrush();
videoBrush.SetSource(camera);
AR.Background = videoBrush;
我得到以下堆栈跟踪:
0x80131515
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.VideoBrush_SetExternalVideoSource(VideoBrush vb, IntPtr& videoSessionHandle)
at System.Windows.Media.VideoBrush.SetUpExternalVideoSession()
at Microsoft.Devices.CameraVideoBrushExtensions.SetSource(VideoBrush brush, Camera camera)
at MyClass.MyFunction()
at System.Windows.Controls.Frame.FireEventHandler[T](EventHandler`1 handler, Object sender, OrientationChangedEventArgs args)
at Microsoft.Phone.Controls.PhoneApplicationPage.UIOrientationChange(ShellPageOrientation orientation)
无论我是否附加调试器,都会抛出异常。
感谢。
答案 0 :(得分:2)
好吧,我现在已经解决了这个问题。我认为解决方案可以被其他人欣赏,所以在这里;
似乎无法将PhotoCamera指定为以编程方式创建的VideoBrush的源,因此我编辑了我的xaml以包含
<Rectangle>
<Rectangle.Fill>
<VideoBrush x:Name="VB" />
</Rectangle.Fill>
</Rectangle>
随后是一个更简单的代码
VB.SetSource(new PhotoCamera());
此外,此代码包含在OnOrientationChanged事件中,该事件通常会多次触发,因此包含在
中if (!processing)
{
processing = true;
VB.SetSource(new PhotoCamera());
var bw = new BackgroundWorker();
bw.DoWork += (object, sender) => {
Thread.Sleep(250);
processing = false;
}
}
代码运行顺畅。
答案 1 :(得分:0)
使用FrontFacing
中的new PhotoCamera(CameraType.FrontFacing)
属性会导致SetSource()
处的错误。使用CameraType.Primary
代替使用以编程方式创建的VideoBrush
。这可能是你的情况吗?