2011-01-04 3 views
1

WindowsFormHost를 호스팅하는 WPF 앱이 있습니다. WindowsFormHost는 ESRI의 ArcEngine을로드합니다. ArcEngine에는 사용 가능한 일부 그리기 기능이 있지만 더 많은 권한과 제어 기능을 찾고 있습니다. ArcEngine에 의해 생성 된 이미지 위에 화면상의 일부 이미지 &을 그려야한다고 가정 할 때, 내 옵션은 무엇입니까?WPF에서 WindowsFormHost 호스팅 내 그림 옵션은 무엇입니까?

답변

2

WPF 창은 포함 된 모든 winforms 요소에 대해 아무 것도 렌더링하지 않습니다. winforms 요소 내에서 드로잉을 수행해야합니다 또는 투명한 배경을 가진 별도의 WPF 창을 만드는 괴롭히는 해킹 & 경계가 없으므로 프로그래밍 방식으로 winforms 요소를 계속 유지할 수 있습니다. 그런 다음 그릴 수 있습니다. 이 오버레이 창은 WPF 메커니즘을 사용합니다. 못생긴하지만 효과적입니다.

+0

이 작업을 수행하기위한 링크가 있습니까? – 0x4f3759df

+1

기술의 예는 다음과 같습니다. http://blogs.msdn.com/b/publicsector/archive/2008/06/24/wpf-and-virtual-earth-revisited.aspx. 그것은 다른 컨트롤이지만,이 기술은 무엇이든 사용할 수 있습니다. –

1

맞춤 레이어를 구현할 수 있습니다. 레이어 내에서 GDI + 또는 OpenGL (동적 표시 모드)을 사용하여 그리기 메서드를 구현할 수 있습니다.

ILayer 인터페이스를 구현하는 클래스를 만듭니다. 이 경우 원하는대로 도면을 관리 할 수 ​​있습니다. GDI +를 사용한 간단한 구현의 예가 있습니다

[Guid("0c745c09-a67a-4736-ba8c-23238582f78f")] 
[ClassInterface(ClassInterfaceType.None)] 
[ProgId("CustomLayerPan.customLayer")] 

public class customLayer : ESRI.ArcGIS.ADF.BaseClasses 
{ 
    public customLayer(List<IGeometry> p_objItems) 
    {   
    } 

    public override void Draw(ESRI.ArcGIS.esriSystem.esriDrawPhase drawPhase, ESRI.ArcGIS.Display.IDisplay Display, ESRI.ArcGIS.esriSystem.ITrackCancel trackCancel) 
    { 
     Graphics objGraphics = Graphics.FromHdc(new IntPtr(((IScreenDisplay)Display).hDC)) as Graphics; 
     //Draw here using GDI+   
    } 
} 
관련 문제