基本信息
源码名称:c# 视频动态绘制 例子源码下载
源码大小:51.12M
文件格式:.rar
开发语言:C#
更新时间:2014-12-12
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 3 元 
   源码介绍

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Input.StylusPlugIns;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace A._1
{
    public class InkVideo : DynamicRenderer
    {
        public InkVideoStroke InkStroke { private set; get; }
        private Point prevPoint;
        private MediaPlayer media=new MediaPlayer();

        public void CreateNewStroke(InkCanvasStrokeCollectedEventArgs e)
        {
            InkStroke = new InkVideoStroke(this, e.Stroke.StylusPoints);
        }

        protected override void OnStylusDown(RawStylusInput rawStylusInput)
        {
            prevPoint = (Point)rawStylusInput.GetStylusPoints().First();
            base.OnStylusDown(rawStylusInput);
        }

        protected override void OnStylusMove(RawStylusInput rawStylusInput)
        {
            StylusPointCollection stylusPoints = rawStylusInput.GetStylusPoints();
            this.Reset(Stylus.CurrentStylusDevice, stylusPoints);
            base.OnStylusMove(rawStylusInput);
        }

        
         public Point Draw(Point first,MediaPlayer mp, DrawingContext dc, StylusPointCollection points)
         {
            // MainWindow main = new MainWindow();
             // videoName=this.Name;
             // if (videoName != null)
             //{
             mp.Open(new Uri(MainWindow.videoName, UriKind.Relative));
             //}
            Point pt = (Point)points.Last();
            Vector v = Point.Subtract(pt, first);
            if (v.Length > 4)
            {
                Rect rect = new Rect(first, v);
                mp.Play();
                dc.DrawVideo(mp, rect);
            }
            return first;
        }

        protected override void OnDraw(DrawingContext drawingContext, StylusPointCollection stylusPoints, Geometry geometry, Brush fillBrush)
        {
            prevPoint = Draw(prevPoint,media,drawingContext, stylusPoints);
            //base.OnDraw(drawingContext, stylusPoints, geometry, fillBrush);
        }
    }
    public class InkVideoStroke : Stroke {
        MediaPlayer mp ;
        InkVideo ink;
        public InkVideoStroke(InkVideo ink, StylusPointCollection stylusPoints)
            : base(stylusPoints)
        {
            this.ink = ink;
            mp = new MediaPlayer();
            this.DrawingAttributes.Color = Colors.Transparent;
        }
        protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes)
        {
            base.DrawCore(drawingContext, drawingAttributes);
            Point pt = (Point)StylusPoints.First();
           ink.Draw(pt, mp,drawingContext, StylusPoints);
        }
    
    }
    }