Как добиться 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;