WPF хостинг WindowsFormHost какие варианты рисования? - PullRequest
1 голос
/ 04 января 2011

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

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Окно WPF не может отображать что-либо поверх любых элементов winforms, которые оно содержит.Вам либо нужно сделать рисование внутри элемента winforms , либо сделать неприятный взлом, создав отдельное окно WPF с прозрачным фоном и без рамки, которую вы программно перемещаете, чтобы держать поверх элемента winforms - тогдаВы можете рисовать в этом окне наложения, используя механизмы WPF.это уродливо, но эффективно.

1 голос
/ 03 декабря 2014

Вы можете реализовать свой пользовательский слой.Внутри слоя вы можете реализовать свой метод рисования с помощью 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+          
    }
}   
...