PreviewControl首次加载实现FitToView


MicroStation SDK的C#接口有一个名为PreviewControl的类,这个类在C:\Program Files\Bentley\MicroStation CONNECT Edition\MicroStation\DgnDisplayUI2.dll这个程序集中。PreviewControl可用于在Form界面上展示指定元素,功能十分强大。有关此类的用法可参考此连接Bentley二次开发爱好者中的文章,PreviewControl在显示元素时有一个问题。在将其实例赋值给ElementHost控件的Child属性后,如果在赋值操作后马上调用PreviewControl实例的FitToView、SetRenderMode等影响显示效果的函数时,会发现这些调用无效。这里给大家介绍一个方法如何解决这个问题,顺着PreviewControl类的继承结构往上找,会找到一个System.Windows.FrameworkElement的基类。在这个基类里边有一个名为Loaded的事件,如下所示:

从名字可以看出其是在元素(此元素非Mstn元素,而是Form控件元素)加载后被触发的一个事件。我们在将PreviewControl实例赋值给ElementHost的Child属性后,对PreviewControl实例添加此事件的回调函数,在事件回调函数中去调用FitToView就实现了在首次加载PreviewControl控件时使显示的元素充满视图显示。完整的Loaded事件回调函数如下所示:

private void Pc_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            DDUI.Bentley.DgnPlatform.PreviewControl pc = sender as DDUI.Bentley.DgnPlatform.PreviewControl;
            if (null != pc)
            {
                pc.FitToView();
            }
        }