zoukankan      html  css  js  c++  java
  • wpf RenderTargetBitmap保存控件为图片时图片尺寸不对的问题

    使用RenderTargetBitmap渲染图片时,必须在需要渲染的控件外层包含一个border控件,不然渲染的图片返回就会出现问题。

    如下:

    <Grid>

    <Grid.RowDefinitions>
      <RowDefinition Height="35" />
      <RowDefinition />
    </Grid.RowDefinitions>

      <Border Grid.Row="1">
      <!--由于要获取控件图片,所以这里在外层必须包含一个border,不然获取出来的图片就会有问题-->
        <Grid x:Name="GrdImage">

          <Image VerticalAlignment="Center" HorizontalAlignment="Center" Source="{Binding Image}" RenderTransformOrigin="0,0" >
        </Grid>
      </Border>

    </Grid>

    如果需要保存GrdImage空间为图片,那么就需要在GrdImage外面在包含一个border

    保存图片代码如下:

    private BitmapSource GetUiImage(FrameworkElement ui)
    {
      RenderTargetBitmap bmp=new RenderTargetBitmap((int)ui.ActualWidth,(int)ui.ActualHeight,96d,96d, PixelFormats.Default);
      bmp.Render(ui);
      return bmp;
    }

    var bmp = GetUiImage(GrdImage);
    BitmapEncoder encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bmp));
    FileStream fs = new FileStream("a.png", FileMode.Create);
    encoder.Save(fs);
    fs.Close();

    以上问题解决参考如下:

    https://blog.csdn.net/chartx/article/details/17560765

  • 相关阅读:
    Python统计后台数据
    jemter上传到服务器进行压测
    Python的文件读写
    Git中的Stash Changes和UnStash Changes用法
    算法集锦
    各种排序介绍
    SQLServerDAL的引用找不到
    抽象是什么?
    自己写的js分页
    动手写代码
  • 原文地址:https://www.cnblogs.com/sczmzx/p/10996211.html
Copyright © 2011-2022 走看看