如何在WPF中实现Image.Clone()?

时间:2009-04-28 14:50:02

标签: wpf image-processing

我从db获取一个byte(byte [])数组,并使用以下方法渲染到Image Control中:

    public Image BinaryImageFromByteConverter(byte[] valueImage)
    {
        Image img = new Image();
        byte[] bytes = valueImage as byte[];
        MemoryStream stream = new MemoryStream(bytes);
        BitmapImage image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = stream;
        image.EndInit();
        img.Source = image;
        img.Height = 240;
        img.Width = 240;
        return img;
    }

所以现在渲染,我想将Image.Source从Image(Control)“复制”到另一个元素,例如:Paragraph ..

paragraph1.Inlines.Add(new InlineUIContainer(ImageOne));

但是没有出现,我尝试使用ImageOne.Source创建一个新的图像,但我刚刚用Uri(@“path”)找到了这个例子,我无法应用这个方法因为我的BitmapImage来自byte []类型

Image img = new Image();
img.Source = new BitmapImage(new Uri(@"c:\icons\A.png"));

请帮助解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:3)

只需创建一个新的Image元素并将其源设置为相同的BitmapImage:

byte[] imageInfo = File.ReadAllBytes("IMG_0726.JPG");

BitmapImage image;

using (MemoryStream imageStream = new MemoryStream(imageInfo))
{
    image = new BitmapImage();
    image.BeginInit();
    image.CacheOption = BitmapCacheOption.OnLoad;
    image.StreamSource = imageStream;
    image.EndInit();
}

this.mainImage.Source = image;
this.secondaryImage.Source = image;

如果你只是将一个来源复制到另一个来源,它也有效:

this.mainImage.Source = image;
this.secondaryImage.Source = this.mainImage.Source;