1

我有一个托管 WindowsFormHost 的 WPF 应用程序。WindowsFormHost 加载 ESRI 的 ArcEngine。ArcEngine 有一些可用的绘图功能,但我正在寻找更多的功能和控制。假设我想在 ArcEngine 创建的图像上在屏幕上绘制一些图像和文本,如果有的话,我有什么选择?

4

2 回答 2

2

WPF 窗口无法在其包含的任何 winforms 元素上呈现任何内容。您要么需要在 winforms 元素内进行绘图,要么需要创建一个具有透明背景且没有边框的单独 WPF 窗口,您可以通过编程移动以保持在 winforms 元素的顶部 - 然后您可以在此叠加层中绘制窗口使用 WPF 机制。它丑陋但有效。

于 2011-01-04T16:23:13.607 回答
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+          
    }
}   
于 2014-12-03T09:41:47.807 回答