2009-04-28 3 views
3

I가 DB에서 (바이트 []) 바이트의 배열을 구하여 이하의 방법에 사용 이미지 제어에 렌더링 : 이제 그 렌더링WPF에서 Image.Clone()을 달성하는 방법은 무엇입니까?

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; 
    } 

를 I 원하는 「카피」Image.Source을 내지 이미지 다른 요소 (제어), 예 : 단락 ..

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

만의 속삭임이 나타납니다, 나는 ImageOne.Source을 사용하여 새 이미지를 만들려고하지만 난 그냥 열린 우리당과이 예제를 발견 (@ "경로") 이 메서드를 적용 할 수 없습니다. BitmapImage는 byte [] 유형에서 가져옵니다.

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

감사합니다. 감사합니다.

+0

내가하지 않는 것이 좋습니다 : 그냥 다른 하나의 소스를 복사 할 경우

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; 

또한 작동 de) 픽셀 형식, 폭, 높이, 보폭을 직렬화하지 않고 스트림에서 이미지를 직렬화합니다. - 버그가 공개되어 있습니다. –

+0

BitmapSource를 이미지로 사용하는 경우 버퍼를 읽고 버퍼에서 새 BitmapSource를 만들 수 있습니다. –

답변

3

그냥 새로운 이미지 요소를 생성하고 같은 BitmapImage에 소스를 설정합니다 (

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

그런 식으로 이미지에서 원본을 복사 할 수 없으면 두 번째 미디어에 동일한 개체를 연결하기 전에 먼저 미디어에서 미디어의 연결을 끊어야합니다. –

+0

BitmapCacheOption.OnLoad로 할 수 있습니다. 파일을 잠그지 않습니다. 코드를 테스트 한 결과 작동합니다. – RandomEngy

관련 문제