3

次のコードで 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)

デバッガーを接続しているかどうかに関係なく、例外がスローされます。

ありがとう。

4

2 に答える 2

2

わかりました、これで解決しました。この解決策は他の人にも評価されると思うので、ここにあります。

プログラムで作成された VideoBrush にソースとして PhotoCamera を割り当てることはできないようです。そのため、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;
    }
}

コードはスムーズに実行されます。

于 2012-04-18T16:21:56.940 に答える
0

FrontFacingで属性を使用するnew PhotoCamera(CameraType.FrontFacing)と、エラーが発生しSetSource()ます。代わりに使用CameraType.Primaryすると、プログラムで作成されたで正常に機能しVideoBrushます。これはあなたの場合でしたか?

于 2012-05-07T14:11:16.940 に答える