WPF托管WindowsFormsHost我的绘图选项是什么?

时间:2011-01-04 16:02:08

标签: wpf windowsformhost

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

2 个答案:

答案 0 :(得分:2)

WPF窗口无法在其包含的任何winforms元素上呈现任何内容。你需要在winforms元素中进行绘图,或者做一个讨厌的黑客,创建一个透明背景的单独的WPF窗口&没有以编程方式移动以保持在winforms元素之上的边框 - 然后您可以使用WPF机制绘制到此叠加窗口。它很丑陋而且很有效。

答案 1 :(得分: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+          
    }
}