How to beat from RenderTargetBitmap to WriteableBitmap?

I am rendering dozens of visual effects in a RenderTargetBitmap. Each is presented in its own Rect. What I want to do is copy one of these Rect areas rendered from the RenderTargetBitmap instance into the same WriteableBitmap area ... Quickly copy rectangular pixels or something. like this.

So, is there a way to quickly copy a rectangle from a RenderTargetBitmap to a WriteableBitmap?

+7
source share
1 answer

Solved by copying the entire RenderTargetBitmap to WriteableBitmap as follows:

protected override void OnRender(DrawingContext drawingContext) { if (ActualWidth == 0 || ActualHeight == 0) return; // Create destination bitmap wb = new WriteableBitmap((int) ActualWidth, (int) ActualHeight, 96, 96, PixelFormats.Pbgra32, null); wb.Lock(); rtb = new RenderTargetBitmap(wb.PixelWidth, wb.PixelHeight, wb.DpiX, wb.DpiY, PixelFormats.Pbgra32); foreach (MyVisual visual in visuals) { visual.Render(rtb); } rtb.CopyPixels(new Int32Rect(0,0, rtb.PixelWidth, rtb.PixelHeight), wb.BackBuffer, wb.BackBufferStride * wb.PixelHeight, wb.BackBufferStride); wb.AddDirtyRect(new Int32Rect(0, 0, (int)ActualWidth, (int)ActualHeight)); wb.Unlock(); drawingContext.DrawImage(wb, new Rect(0, 0, ActualWidth, ActualHeight)); } 
+3
source

All Articles