2012-04-16 34 views
3

时抛出尝试设置PhotoCamera作为源与代码的VideoBrush,当我得到上述错误:0x80131515启动相机

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) 

的无论是否附加调试器,都会引发异常。

谢谢。

回答

2

好的,我现在已经解决了这个问题。我认为解决方案可以得到别人的赞赏,所以在这里;

现在看来,这是不可能的分配PhotoCamera作为源的编程方式创建的VideoBrush,所以我编辑我的XAML包含一个

<Rectangle> 
    <Rectangle.Fill> 
     <VideoBrush x:Name="VB" /> 
    </Rectangle.Fill> 
</Rectangle> 

这是通过一个简单的代码

VB.SetSource(new PhotoCamera()); 
随访

此外,该代码包含在一个OnOrientationChanged事件,其触发appearently多次,所以包含在

if (!processing) 
{ 
    processing = true; 

    VB.SetSource(new PhotoCamera()); 

    var bw = new BackgroundWorker(); 
    bw.DoWork += (object, sender) => { 
     Thread.Sleep(250); 
     processing = false; 
    } 
} 

代码运行平稳。

0

使用中的FrontFacing属性会导致我在SetSource()的错误。使用CameraType.Primary而不是编程方式创建VideoBrush。这可能是你的情况吗?

+0

我使用了CameraType.Primary。我认为我也可以使用编程创建的VideoBrush。神奇似乎在Thread.Sleep部分。而后台工作者似乎相当重要,为了不阻止用户界面。 – Kenn 2012-05-07 21:04:59