2012-04-16 69 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