How to capture a control to bitmap?

jia liang 21 Reputation points
2022-09-20T04:23:28.29+00:00

I want to make a paint project with my mouse and capture it to bitmap

how to do it?

save a control to bitmap?

i am using windows sdk winui3

Windows App SDK
Windows App SDK
A set of Microsoft open-source libraries, frameworks, components, and tools to be used in apps to access Windows platform functionality on many versions of Windows. Previously known as Project Reunion.
725 questions
0 comments No comments
{count} votes

Accepted answer
  1. Castorix31 81,726 Reputation points
    2022-09-20T06:59:36.677+00:00

    Use RenderTargetBitmap

    For example, a test with a Button saved to a .PNG image =>

                Microsoft.UI.Xaml.Media.Imaging.RenderTargetBitmap renderTargetBitmap = new Microsoft.UI.Xaml.Media.Imaging.RenderTargetBitmap();  
                await renderTargetBitmap.RenderAsync(myButton);  
                var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();   
    
                Windows.Storage.StorageFolder folder = await Windows.Storage.StorageFolder.GetFolderFromPathAsync(@"E:\");       
                var destfile = await folder.CreateFileAsync("controlimage.png", Windows.Storage.CreationCollisionOption.ReplaceExisting);  
                using (var ras = await destfile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite, Windows.Storage.StorageOpenOptions.None))  
                {                     
                    Windows.Graphics.Imaging.BitmapEncoder encoder = await Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(Windows.Graphics.Imaging.BitmapEncoder.PngEncoderId, ras);  
                    encoder.SetPixelData(Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8, Windows.Graphics.Imaging.BitmapAlphaMode.Straight, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 96.0, 96.0, pixelBuffer.ToArray());  
                    await encoder.FlushAsync();  
                }  
    

0 additional answers

Sort by: Most helpful