protected virtual void OnRenderCompleted(RenderResult result) { if (result.IsSuccess) { completedRequest = result.Request; completedBitmap = result.CreateBitmap(); bitmapInvalidated = false; InvalidateVisual(); BackgroundRenderer.RaiseRenderingFinished(this); } }
/// <summary>Constructs successul rendering result</summary> /// <param name="request">Source request</param> /// <param name="result">Rendered bitmap</param> public RenderResult(RenderRequest request, BitmapSource result) { this.request = request; pixelWidth = result.PixelWidth; pixelHeight = result.PixelHeight; stride = result.PixelWidth * result.Format.BitsPerPixel / 8; dpiX = result.DpiX; dpiY = result.DpiY; palette = result.Palette; format = result.Format; pixels = new byte[pixelHeight * stride]; result.CopyPixels(pixels, stride, 0); }
protected virtual void OnRenderCompleted(RenderResult result) { if (IsDisposed) { return; } completedRequest = result.Request; completedBitmap = result.Bitmap; bitmapInvalidated = false; InvalidateVisual(); BackgroundRenderer.RaiseRenderingFinished(this); }
private void RenderThreadFunc() { WaitHandle[] events = new WaitHandle[] { renderRequested, shutdownRequested }; while (true) { lock (this) { activeRequest = null; if (pendingRequest != null) { activeRequest = pendingRequest; pendingRequest = null; } } if (activeRequest == null) { WaitHandle.WaitAny(events); if (shutdownRequested.WaitOne(0)) { break; } } else { try { BitmapSource result = (BitmapSource)RenderFrame(activeRequest.Visible, activeRequest.Output); if (result != null && !IsDisposed) { Dispatcher.BeginInvoke( new RenderCompletionHandler(OnRenderCompleted), new RenderResult(activeRequest, result)); } } catch (Exception exc) { Trace.WriteLine(String.Format("RenderRequest {0} failed: {1}", activeRequest.RequestID, exc.Message)); } } } }
private void CreateRenderTask(DataRect visible, Rect output) { lock (this) { bitmapInvalidated = true; if (activeRequest != null) { activeRequest.Cancel(); } pendingRequest = new RenderRequest(nextRequestId++, visible, output); renderRequested.Set(); } if (renderThread == null) { renderThread = new Thread(RenderThreadFunc); renderThread.IsBackground = true; renderThread.SetApartmentState(ApartmentState.STA); renderThread.Start(); } }
/// <summary>Constructs successul rendering result</summary> /// <param name="request">Source request</param> /// <param name="result">Rendered bitmap</param> public RenderResult(RenderRequest request, BitmapSource result) { this.request = request; pixelWidth = result.PixelWidth; pixelHeight = result.PixelHeight; stride = result.PixelWidth * result.Format.BitsPerPixel / 8; dpiX = result.DpiX; dpiY = result.DpiY; palette = result.Palette; format = result.Format; pixels = new byte[pixelHeight * stride]; result.CopyPixels(pixels, stride, 0); }
private void RenderThreadFunc() { WaitHandle[] events = new WaitHandle[] { renderRequested, shutdownRequested }; while (true) { lock (this) { activeRequest = null; if (pendingRequest != null) { activeRequest = pendingRequest; pendingRequest = null; } } if (activeRequest == null) { WaitHandle.WaitAny(events); if (shutdownRequested.WaitOne(0)) break; } else { try { BitmapSource result = (BitmapSource)RenderFrame(activeRequest.Visible, activeRequest.Output); if (result != null) Dispatcher.BeginInvoke( new RenderCompletionHandler(OnRenderCompleted), new RenderResult(activeRequest, result)); } catch (Exception exc) { Trace.WriteLine(String.Format("RenderRequest {0} failed: {1}", activeRequest.RequestID, exc.Message)); } } } }
private void CreateRenderTask(DataRect visible, Rect output) { lock (this) { bitmapInvalidated = true; if (activeRequest != null) activeRequest.Cancel(); pendingRequest = new RenderRequest(nextRequestId++, visible, output); renderRequested.Set(); } if (renderThread == null) { renderThread = new Thread(RenderThreadFunc); renderThread.IsBackground = true; renderThread.SetApartmentState(ApartmentState.STA); renderThread.Start(); } }
protected virtual void OnRenderCompleted(RenderResult result) { if (result.IsSuccess) { completedRequest = result.Request; completedBitmap = result.CreateBitmap(); bitmapInvalidated = false; InvalidateVisual(); BackgroundRenderer.RaiseRenderingFinished(this); } }
/// <summary>Constructs successul rendering result</summary> /// <param name="request">Source request</param> /// <param name="result">Rendered bitmap</param> public RenderResult(RenderRequest request, BitmapSource result) { this.bitmap = result; this.request = request; result.Freeze(); }
/// <summary>Constructs successul rendering result</summary> /// <param name="request">Source request</param> /// <param name="result">Rendered bitmap</param> public RenderResult(RenderRequest request, BitmapSource result) { this.bitmap = result; this.request = request; result.Freeze(); }
protected virtual void OnRenderCompleted(RenderResult result) { if (IsDisposed) return; completedRequest = result.Request; completedBitmap = result.Bitmap; bitmapInvalidated = false; InvalidateVisual(); BackgroundRenderer.RaiseRenderingFinished(this); }