Example #1
0
        private void GraphicsInteropPanel_Loaded(object sender, RoutedEventArgs e)
        {
            RenderFrame ParentRenderfarame = FindParentRenderFrame();

            if (ParentRenderfarame == null)
            {
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    Renderframe        = new OffscreenRenderFrame();
                    Renderframe.Height = (int)ActualHeight;
                    Renderframe.Width  = (int)ActualWidth;
                    Renderframe.RenderTargetChanged += Renderframe_RenderTargetChanged;
                    Renderframe.Initialize();
                    Clear            = Renderframe.CreateDrawCommnad2D <Clear2DCommand>();
                    Clear.clearColor = SharpDX.Color.White;
                    image            = new System.Windows.Controls.Image();
                    image.Width      = ActualWidth;
                    image.Height     = ActualHeight;
                    imageSource      = new GraphicsInteropImageSource();
                    image.Source     = imageSource;
                    SizeChanged     += GraphicsInteropPanel_SizeChanged;
                    System.Windows.Media.CompositionTarget.Rendering += CompositionTarget_Rendering;
                }));
            }
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Dispatcher.BeginInvoke(new Action(() =>
            {
                renderFrame.Height = (int)(this.Content as Grid).RenderSize.Height;
                renderFrame.Width  = (int)(this.Content as Grid).RenderSize.Width;
                renderFrame.RenderTargetChanged += RenderFrame_RenderTargetChanged;
                //renderFrame.DisplayHandle = Handle;
                renderFrame.Initialize();
                TargetImage.Source = imageSource;
                BackgroundColor    = Interop.MediaColorToNativeColor((Background as SolidColorBrush).Color);

                Clear            = renderFrame.CreateDrawCommnad2D <Clear2DCommand>();
                Clear.clearColor = BackgroundColor;

                SharpDX.Direct2D1.Ellipse ellipse = new SharpDX.Direct2D1.Ellipse(new SharpDX.Mathematics.Interop.RawVector2(100, 100), 50, 50);
                EllipseBrush = renderFrame.Controller.CreateSolidColorBrush(SharpDX.Color.Black);

                DrawEllipse         = renderFrame.CreateDrawCommnad2D <DrawEllipse2DCommand>();
                DrawEllipse.ellipse = ellipse;
                DrawEllipse.brush   = EllipseBrush;

                FillEllipse         = renderFrame.CreateDrawCommnad2D <FillEllipse2DCommand>();
                FillEllipse.ellipse = ellipse;
                FillEllipse.brush   = EllipseBrush;

                DrawLine             = renderFrame.CreateDrawCommnad2D <DrawLine2DCommand>();
                DrawLine.point0      = new SharpDX.Mathematics.Interop.RawVector2(0, 0);
                DrawLine.point1      = new SharpDX.Mathematics.Interop.RawVector2(100, 100);
                DrawLine.strokeWidth = 10;
                DrawLine.brush       = EllipseBrush;

                System.Windows.Media.CompositionTarget.Rendering += OnRendering;
                //dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
                //dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 16);
                //dispatcherTimer.Start();
            }));
        }