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(); })); }