1

再生中であってもビデオ上に基本的な図形を描画するアプリケーションについて助けが必要です。ビデオの再生に AXWindowsMediaPlayer コントロールを使用しています。また、カスタム パネルを配置して、プレーヤー コントロール上に図形を描画します。カスタムパネルは透明です。動画を再生していないときでもスムーズに描画できます。しかし、それが再生されると、すべてがうまくいきません。ビデオ上の描画が消去されます。どうすれば問題を解決できますか? 助けてください。

4

1 に答える 1

3

私はこれを行う方法を見つけました。Canvas を使用した WPF の 1 つの方法を次に示します。

private void buttonPlayVideo_Click(object sender, RoutedEventArgs e)
{
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
    dlg.Filter = "All Files|*.*";
    Nullable<bool> result = dlg.ShowDialog();
    if (result == true) {
        MediaPlayer mp = new MediaPlayer();
        mp.Open(new Uri(filename));
        VideoDrawing vd = new VideoDrawing();
        vd.Player = mp;
        vd.Rect = new Rect(0, 0, 960, 540);
        DrawingBrush db = new DrawingBrush(vd);
        canvas.Background = db;
        mp.Play();
    }
}

次に、Canvas のマウス イベントを作成し、それを使用して描画します

    Point startPoint, endPoint;
    private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
    {
        startPoint = e.GetPosition(canvas);
    }
    private void canvas_MouseUp(object sender, MouseButtonEventArgs e)
    {
        endPoint = e.GetPosition(canvas);

        Line myLine = new Line();
        myLine.Stroke = System.Windows.Media.Brushes.LightSteelBlue;
        myLine.X1 = startPoint.X;
        myLine.Y1 = startPoint.Y;
        myLine.X2 = endPoint.X;
        myLine.Y2 = endPoint.Y;
        myLine.HorizontalAlignment = HorizontalAlignment.Left;
        myLine.VerticalAlignment = VerticalAlignment.Center;
        myLine.StrokeThickness = 2;
        canvas.Children.Add(myLine);
    }
于 2012-12-06T04:26:14.547 に答える