WPF保存Canvas

    最近遇到怎样保存Canvas里面的内容,闲来无事,自己做个练习,来实践一下。下面贴出效果图和代码




  下面为核心代码:

//创建FileStream

FileStream fs = new FileStream(path, FileMode.Create);
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)ic.ActualWidth,
                    (int)ic.ActualHeight, 1 / 96, 1 / 96, PixelFormats.Pbgra32);
                bmp.Render(ic);
                BitmapEncoder encoder = new TiffBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                encoder.Save(fs);
                fs.Close();


前台代码:

<Window x:Class="SavePanel.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="保存Canvas" Width="525" Height="350">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="45" />
        </Grid.RowDefinitions>
        <Border Grid.Row="0" Background="Black" BorderThickness="3">
            <InkCanvas Name="ic" />
        </Border>
        <Button Name="btnSave" Grid.Row="1" Width="75" Height="25" Margin="10"
                HorizontalAlignment="Right" Click="btnSave_Click" Content="保存" />
    </Grid>
</Window>
后台代码:

        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog save = new SaveFileDialog();
            save.Filter = "BMP|*.bmp|PNG|*.png|JPG|*.jpg";
            if (save.ShowDialog().Value)
            {
                if (SaveImg(save.FileName))
                {
                    MessageBox.Show("保存成功!");
                }
            }
        }

        private bool SaveImg(string path)
        {
            try
            { 
                FileStream fs = new FileStream(path, FileMode.Create);
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)ic.ActualWidth,
                    (int)ic.ActualHeight, 1 / 96, 1 / 96, PixelFormats.Pbgra32);
                bmp.Render(ic);
                BitmapEncoder encoder = new TiffBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                encoder.Save(fs);
                fs.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值