我想写一个功能,需要像cell Library预览窗口一样的窗口,请问如何实现?
您可以看一下这几篇博文:mp.weixin.qq.com/.../homepage
Answer Verified By: aoteman
测试了 还是没哟找到实时显示的技巧,符老师说原作者会更新,谢谢郭老师
谢谢 符老师了。C++对我来说难度有点大 ,真的很谢谢您
符老师 文章嘛时候能更新呢
抱歉,不是我写的文章,我只能是催促一下原作者。这个控件是未公开的一个控件,确实没有太多资料可查询。你如果不需要哪种能灵活控制的预览控件的话,仅仅是像Cell Lib中那样显示一个静态的图像预览,我们是有现成的方法的。
好的 符老师 谢谢符老师了啊
可以添加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(); pc.Rotate(DDUI.Bentley.DgnPlatform.RotationMode.Isometric); pc.SetRenderMode(DDUI.Bentley.DgnPlatform.RenderMode.WireFrame); } }
我在博客的代码案例中修改后发现,如图问题,pc为空了.好尴尬。
这个loaded事件是在哪里加呢,我没有领会到原理,EventArgs转化为RoutedEventArgs也报错了。
我已经研究好久了,有点尴尬了,我自己水平搞不定唉。
老师您能否直接给我一个能运行的小案例呢?就差最后一点了。谢谢老师了。
//其它代码不显示,仅提供Button的Click事件代码便于读者理解基本使用 private void ShowCurrentModelBtn_Click(object sender, EventArgs e) { //获取当前DgnModel DgnModel dgnmodel = Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModel(); try { //构造元素集 ElementAgenda showElements = new ElementAgenda(); //元素集来源为选择 showElements.Source = ModifyElementSource.Selected; //获取当前DgnModel所有图形元素 ModelElementsCollection elements = dgnmodel.GetGraphicElements(); //遍历所有图形元素 IEnumerator<Element> allelement = elements.GetEnumerator(); while (allelement.MoveNext()) { showElements.Insert(allelement.Current, false); } //获取当前DgnModel的IntPtr IntPtr modelPtr = dgnmodel.GetNative(); unsafe { DDUI.Bentley.DgnPlatform.PreviewControlOptions options = new DDUI.Bentley.DgnPlatform.PreviewControlOptions(); options.IsFitToolVisible = true; options.IsPanToolVisible = true; options.IsViewingToolsVisible = true; options.IsZoomToolsVisible = true; options.IsRotationToolVisible = true; DDUI.Bentley.DgnPlatform.PreviewControl pc = sender as DDUI.Bentley.DgnPlatform.PreviewControl; if (null != pc) { pc.FitToView(); pc.Rotate(DDUI.Bentley.DgnPlatform.RotationMode.Isometric); pc.SetRenderMode(DDUI.Bentley.DgnPlatform.RenderMode.WireFrame); } } } catch (System.Exception ex) { //MessageBox.Show(ex.Message + ":" + ex.StackTrace); } }
郭老师,有没有能运行的小项目案例呢?
请参考附件中的代码:
FormForTestUIcs.7z
感谢郭老师,感觉飘了