WCF 서비스에서 이미지를 전달하고 통과 한 후 WPF 데이터 격자에 표시하는 가장 좋은 방법은 무엇입니까?WCF를 통해 이미지를 전달하고 WPF 데이터 격자에 표시
답변
나는이 유일한 또는 가장 좋은 방법입니다 말하는 게 아니에요,하지만 우리는이 같은 일이 :
당신이해야 할 것은 :
는 이미지를 반환 것 WCF 방법을 만들기 어떤 이드 든 뭐든간에. 그것은 바이트 배열 (byte []) 반환해야합니다 : 데이터 클래스 (그리드에 표시 객체) 속성 이미지를 만들기에서
public byte[] GetImage(int id)
{
// put your logic of retrieving image on the server side here
}
을의 WCF 메서드를 호출하고 BitmapImage에 바이트 배열을 변환해야 그 게터 :
UI를 자유 케하지 않도록<DataTemplate> <!-- Can be a ControlTemplate as well, depends on where and how you use it -->
<Image
Source={Binding Image, IsAsync=true}
/>
</DataTemplate>
가장 간단한 방법 : 휴대 템플릿 (또는 어디든지) 이미지 컨트롤을 넣고 위에서 만든 이미지 속성의 소스 속성을 바인딩에
public BitmapImage Image
{
get
{
// here - connection is your wcf connection interface
// this.ImageId is id of the image. This parameter can be basically anything
byte[] imageData = connection.GetImage(this.ImageId);
// Load the bitmap from the received byte[] array
using (System.IO.MemoryStream stream = new System.IO.MemoryStream(imageData, 0, imageData.Length, false, true))
{
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = stream;
try
{
bmp.EndInit();
bmp.Freeze(); // helps for performance
return bmp;
}
catch (Exception ex)
{
// Handle exceptions here
}
return null; // return nothing (or some default image) if request fails
}
}
}
이미지를 검색 할 때 내가했던 것처럼 IsAsync 속성을 false로 설정할 것입니다. 그러나 개선해야 할 부분이 많이 있습니다. 예 : 이미지를로드하는 동안로드 애니메이션을 일부 표시 할 수 있습니다.
다른 것을로드하는 동안 뭔가 표시하는 것은 PriorityBinding을 사용하여 수행 할 수 있습니다 (여기에서 읽을 수 있습니다 : http://msdn.microsoft.com/en-us/library/ms753174.aspx).
이미지를로드하는 동안 애니메이션을 표시하는 방법은 무엇입니까? –
답변을 업데이트했습니다 – arconaut
이것은 이미지가 작 으면 좋은 답변 일뿐입니다. . 이미지의 크기에 따라 다릅니다. 크기가 크거나 많은 양의 요청이있는 경우이 솔루션은 작동하지 않습니다. –
스트림에서 WPF 이미지를로드 할 수 있습니까? 그렇다면 WCF 서비스를 작성하여 System.IO.Stream 유형을 반환 할 수 있습니다.
내가 그 이유를 묻는 이유는 모르겠다. –
스트림이 메시지의 유일한 부분으로 표시되어있는 한 메시지의 일부로 스트림을 보낼 수 있습니다. 메시지의 다른 모든 필드는 헤더로 이동해야합니다. – SaguiItay
- 1. wpf 데이터 격자에 행 추가
- 2. 관련 테이블의 필드를 Silverlight 데이터 격자에 표시
- 3. WPF 데이터 격자에 콤보 상자 채우기 방법
- 4. Flex : 고급 데이터 격자에 xml 표시
- 5. 두 객체의 속성을 데이터 격자에 표시
- 6. Silverlight/xaml - 자식 데이터를 데이터 격자에 표시
- 7. sqlite에서 base64로 인코딩 된 이미지를 flex 데이터 격자에 표시해야합니다.
- 8. WCF를 통해 개체 노출
- 9. vb.net의 데이터 격자에 문자 추가
- 10. WPF - RadGridView에서 동적으로 코드를 통해 이미지 표시
- 11. 격자에 레코드를 표시 할 라이브러리
- 12. WPF를 사용하여 격자에 이미지 표시
- 13. 격자에 표시 데이터를 통해 Ext js로 PHP 화하기 문제
- 14. 빈 데이터 격자에 메시지를 표시 할 수 있습니까?
- 15. WCF를 통해 개체를 노출하는 방법?
- 16. DataView 인스턴스가 항목 소스로있는 WPF 데이터 격자에 데이터를 표시 할 수 없습니다.
- 17. Silverlight가 데이터 격자에 집중하지 않도록하십시오.
- 18. 데이터 격자 정렬을 다른 데이터 격자에 적용하십시오.
- 19. ViewModel이 데이터 격자에 요소를 표시하지 않습니다.
- 20. WCF를 통한 데이터 정의
- 21. 텍스트 상자를 데이터 격자에 넣는 방법?
- 22. 이미지를 얻고 PHP 스크립트를 통해 표시
- 23. 호버상의 이미지를 통해 링크가있는 레이어/div 표시
- 24. 웹 서비스의 데이터 집합을 wpf의 데이터 격자에 바인딩하는 방법
- 25. Linq2Sql을 Wcf를 통해 직렬화 - 버그 또는 오해?
- 26. flex에서 데이터 격자에 파일 아이콘을 추가하십시오.
- 27. WCF를 통해 들어오는 XML을 살균하기
- 28. WCF를 통해 MemoryStream을 스트리밍하는 방법
- 29. WCF를 통해 전송할 때 오버 헤드가 가장 적은 데이터 유형
- 30. WCF를 통해 이진 데이터 보내기 : 이진 대 MTOM 인코딩
처리중인 이미지의 평균 크기는 얼마나됩니까? 얼마나 많은 사람들이 한 번의 통화로 대처해야합니까? 질문에 대한 여러 가지 좋은 해결책이 있지만 실제로 각 통화에서 처리해야하는 정보의 양에 따라 달라집니다. 바이트 배열로 반환하면 이미지가 비교적 작을 것이고 한 번에 많은 수를 반환하지 않아도 좋은 해결책 일뿐입니다 (데이터 그리드에 넣기 때문에 묻습니다. –