2011-01-04 6 views
1

У меня есть приложение WPF, в котором находится WindowsFormHost. WindowsFormHost загружает ArcEngine ESRI. ArcEngine имеет некоторые доступные функции рисования, но я ищу больше энергии и контроля. Предполагая, что я хочу нарисовать некоторые изображения на экране по изображению, созданному ArcEngine, каковы мои варианты, если они есть?WPF-хостинг WindowsFormHost, каковы мои возможности рисования?

ответ

2

Окно can not 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+   
    } 
}