2010-07-16 2 views
1

XAML을 통해 Image 컨트롤에 BitmapImage를 바인딩 할 수 있도록 메모리의 System.Drawing.Bitmap을 메모리의 BitmapImage로 변환해야하는 프로젝트가 있습니다. 내가 겪고있는 문제는 원래 비트 맵이 축소되고 매우 흐릿하게 변환되는 동안 발생합니다.WPF 이미지 형식 및 바인딩

원래 비트 맵이 바코드이며이 바코드를 읽을 필요가 있기 때문에 이것은 매우 나쁜 것입니다. 비트 맵의 ​​무결성을 유지하기 위해 할 수있는 일이 있습니까? 또는 먼저 비트 맵을 저장하고 URI를 사용하지 않고도 System.Drawing.Bitmap을 WPF Image 컨트롤에 바인딩 할 수 있습니까?

또한 누구나 내 모든 이미지 형식의 차이점을 설명 할 수 있습니까? 그것들은 엄청나게 많은 것처럼 보입니다. 그것들은 수많은 네임 스페이스에 존재하며 그것들을 변환하는 것은 고통입니다.

편집 .....

public static BitmapImage GetBitmapImage(Bitmap bmp) 
    { 
     MemoryStream ms = new MemoryStream(); 
     bmp.Save(ms, ImageFormat.Bmp); 

     BitmapImage bmpI = new BitmapImage(); 
     bmpI.BeginInit(); 
     bmpI.StreamSource = ms; 
     bmpI.EndInit(); 

     ms.Close(); 
     ms.Dispose(); 

     return bmpI; 
    } 
+0

변환하는 데 사용하는 코드를 게시 할 수 있습니까? 이 작업을 수행하기 위해 ValueConverter를 사용하고 있습니까? – Nate

+0

변환 방법으로 업데이트되었습니다. – user337816

답변

1

는 서로 다른 비트 맵 확장 모드를 시도?

예를 들어

:

이미지 RenderOptions.BitmapScalingMode = "HighQuality"... 내 의견, 모든 부담을 제거하는 가장 쉬운 방법으로

+0

아니, 나는 그것을 시도 할 것이다. 비트 맵이 변환 될 때 비트 맵이 아래로 축소되지 않도록 할 것인가? – user337816

+0

BitmapScalingMode는 이미지의 크기를 늘리거나 줄일 때 사용되는 크기 조정 알고리즘입니다. –

+0

나는 마침내이 일을 망쳐 버리고 나는 아무것도 고칠 수 없었다. 이것이 어디에서 시행되어야 하는가? – user337816

1

사용자 컨트롤을 만드는 것입니다, 다음을 넣어 그 제어에 WindowsFormsHost

. 그런 다음 Windows 폼 이미지를 호스트에두고 사용자 정의 컨트롤의 기본 코드에 종속성 속성을 만들어 데이터를 바인딩하고 변경 내용을 이미지 컨트롤에 업데이트 할 수 있습니다.

건배.

+0

그림 상자를 호스트의 컨트롤로 사용 하시겠습니까? – user337816

+0

예, 그림 상자를 호스트에 추가 할 수 있습니다. –

+0

그래서 내가이 유선있어 그리고 작동하지만 Windowsformhost 및 관련된 자식 비트 맵 비트 맵을 windowsformhost 포함하는 부모 컨트롤을 렌더링 할 때 캡처됩니다. windowsformshost는 종속성 객체가 아니기 때문에이게 있습니까? – user337816