WPF Canvas转换为位图 (RenderTargetBitmap)

Posted 四芯线

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF Canvas转换为位图 (RenderTargetBitmap)相关的知识,希望对你有一定的参考价值。

使用 RenderTargetBitmap 的注意事项:

要渲染的Canvas元素要放在Border元素内,并且此Border元素不能设置边框宽度(BorderThickness),不然生成的位图会出现错误。如果需要边框效果,可再加一层Border。

例:

cs:

            RenderTargetBitmap bmp = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96, PixelFormats.Pbgra32);
            bmp.Render(canvas);
            //
            string file = @"D:\xxx.jpg";
            string Extension = System.IO.Path.GetExtension(file).ToLower();
            BitmapEncoder encoder = new JpegBitmapEncoder();    //可设置其它格式的位图编码器
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            using (Stream stm = File.Create(file))
            {
                encoder.Save(stm);
            }

xaml:

        <Border BorderBrush="Black" BorderThickness="10" Width="300" Height="300" Grid.Row="1">
            <Border>
                <Canvas x:Name="canvas" Background="White">
                    <Image Source="96x96-2.jpg" Canvas.Left="96" Canvas.Top="96"></Image>
                </Canvas>            
            </Border>
        </Border>

 

以上是关于WPF Canvas转换为位图 (RenderTargetBitmap)的主要内容,如果未能解决你的问题,请参考以下文章

WPF - 将位图转换为 ImageSource

android的canvas如何转换为一张bitmap(位图)

如何将 WPF UI 转换为 MAUI UI

WPF将Point数组转换为PathGeometry

如何在wpf中的DateTime上使用canvas.SetLeft

在 WPF 中更改画布的坐标系