Как добиться Image.Clone() в WPF?

Я получаю массив байтов (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(@"путь"), я не могу применить этот метод, потому что мой BitmapImage происходит из типа byte []

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

Помогает с этим вопросом пожалуйста, спасибо!

1 ответ

Решение

Просто создайте новый элемент 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;
Другие вопросы по тегам