none
richtextbox 加入过大的图片会 自动旋转? RRS feed

  • 问题

  • Paragraph paragraph = new Paragraph();
                Image image = new Image();
                image.Height = 150;
                image.Width = 350;
                byte[] byData = Request("http://nim.nos.netease.com/NDE0NTY5MQ==/bmltYV8xNTczMTI4OTNfMTQ5MjMxODExMDk1MV80MjZiYjVlMi02OTFjLTQ3YWQtOTAwOC1lNWQzNDk4ZGUzMzI=", "GET", "");
                BitmapImage bi = ByteArrayToBitmapImageThumbnail(byData);
                image.Source = bi;
                InlineUIContainer container = new InlineUIContainer(image);
                paragraph = new Paragraph(container);
                rich.Document.Blocks.Add(paragraph);

    图片源地址明明是正的  但加入到richtextbox中之后就旋转了   如果用较小的图片就不会旋转

    2017年6月5日 8:22

答案

  • 因为BitmapImage不支持图片的元数据,无法自动旋转,所以你看到的图片和在图片查看器中看到的不一样。用图片查看软件看一下就知道了,你的那幅图片的元数据是“旋转270度”。


    2017年6月5日 9:37

全部回复

  • Hi,

    据我所知不会,建议你检查这个BitmapImage不在richtextbox中是如何显示的。

    可以提供ByteArrayToBitmapImageThumbnail方法的代码吗?可能是这个地方有问题。

    另外,检查服务器上的图片是否正确。

    Best Regards,

    Bob



    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年6月5日 9:35
    版主
  • 因为BitmapImage不支持图片的元数据,无法自动旋转,所以你看到的图片和在图片查看器中看到的不一样。用图片查看软件看一下就知道了,你的那幅图片的元数据是“旋转270度”。


    2017年6月5日 9:37
  •  public static BitmapImage ByteArrayToBitmapImageThumbnail(byte[] byteArray)
            {
                BitmapImage bmp = null;

                try
                {
                    bmp = new BitmapImage();
                    bmp.BeginInit();
                    bmp.StreamSource = new MemoryStream(byteArray);
                    bmp.DecodePixelWidth = 300;
                    bmp.EndInit();
                }
                catch
                {
                    bmp = null;
                }

                return bmp;
            }
    2017年6月6日 0:26
  • 那如何解决呢  要放在richtextbox中
    2017年6月6日 0:39
  • Hi,

    如果不能对服务器上的原图片进行直接的修改,那你可以使用WPF中的变换对image控件进行旋转。

    RotateTransform rotateTransform = new RotateTransform(180);
    image.RenderTransform = rotateTransform;

    Best Regards,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年6月6日 1:02
    版主
  • 我没办法判断服务器的图片是不是该旋转  如何在image中设置元数据呢?
    2017年6月6日 1:19