У меня есть приложение WPF, в котором находится WindowsFormHost. WindowsFormHost загружает ArcEngine ESRI. ArcEngine имеет некоторые доступные функции рисования, но я ищу больше энергии и контроля. Предполагая, что я хочу нарисовать некоторые изображения на экране по изображению, созданному ArcEngine, каковы мои варианты, если они есть?WPF-хостинг WindowsFormHost, каковы мои возможности рисования?
ответ
Окно can not WPF визуализирует что-либо над любыми элементами winforms, которые он содержит. Вам нужно либо сделать рисунок в элементе winforms , либо сделать неприятный взлом создания отдельного окна WPF с прозрачным фоном & нет границы, которую вы программно перемещаете, чтобы держать поверх элемента winforms, - тогда вы можете рисовать это оверлейное окно с использованием WPF-механизмов. это уродливо, но эффективно.
Вы можете реализовать свой пользовательский уровень. Внутри слоя вы можете реализовать свой метод рисования с помощью 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+
}
}
У вас есть какие-либо ссылки для меня, чтобы выполнить это? – 0x4f3759df
вот пример техники: http://blogs.msdn.com/b/publicsector/archive/2008/06/24/wpf-and-virtual-earth-revisited.aspx. это для другого контроля, но техника работает на что угодно. –