0

我想在 AutoCAD 中创建信息框功能。就像您将某些功能悬停在 Google 地球中一样,它会向您显示带有图片的信息框。

像这样的东西

我正在考虑使用调色板,但我不确定如何将其调整为看起来像信息框。

我打算创建 .NET 插件。

有什么建议么?

4

3 回答 3

3

**好吧,我发现我认为最好的方法是使用 AutoCAD 工具提示。这是代码片段:

Autodesk.Windows.ComponentManager.ToolTipOpened +=
            (s, e) =>
            {       
                Autodesk.Internal.Windows.ToolTip tooltip =
                s as Autodesk.Internal.Windows.ToolTip;
                if (tooltip != null)
                {                     
                        var image = new System.Windows.Controls.Image();
                        var bitmapImage = new BitmapImage();
                        bitmapImage.BeginInit();
                        bitmapImage.UriSource = new Uri(@"C:/index.jpeg");
                        bitmapImage.EndInit();
                        image.Source = bitmapImage;
                        tooltip.Height = image.Height;
                        tooltip.Width = image.Width;
                        tooltip.Content = image;
                }
            };

我现在看起来很好。:)**

正如我在下面的评论中所说,这里是此解决方案的屏幕截图

在此处输入图像描述

您可能会注意到,工具提示不在几何体附近,我选择了粉红色的。那是我的最后一个问题。我的流程是,当我选择对象时,我得到了 win 表单 listBox,它为我提供了几个连接到该实体的图像文件。当我选择一个时,它会打开工具提示,但它似乎相对于列表框对话框。我无法找到如何手动设置工具提示位置的解决方案。有什么建议么?

于 2012-06-06T21:56:40.603 回答
2

您可以使用 PointMonitor 来检测鼠标移动:http ://through-the-interface.typepad.com/through_the_interface/2009/07/providing-information-on-autocad-objects-in-a-tooltip-using-net .html

为了显示图像,您可以在调色板中使用 WPF:http: //through-the-interface.typepad.com/through_the_interface/2009/08/hosting-wpf-content-inside-an-autocad-palette.html

于 2012-06-04T07:20:41.543 回答
0

使用 PointMonitor,检测您关注的实体是否在光标位置下,并在适用时弹出您自己的窗口,将图像保存在列表框、组合框等中,更加可控和灵活。该窗口可以是您选择的 WPF 或 WinForm。

这绝对是可行的,并且一些应用程序已经相当成熟地使用了这些技术。必须考虑一些协调转换的东西,例如从窗口像素到AutoCAD显示系统,从DCS到WCS,来回。

现在,唯一剩下的可能就是性能了。希望以下提示对您有所帮助。

  1. 缓存之前的实体 ID。如果光标仍悬停在其上,则什么也不做,只保留上一个图像。
  2. 如果用户将光标从一个实体快速移动到另一个实体,则可能不需要丢弃前一个窗口并创建一个新窗口。替换图像应该足够了,而且很好。
  3. 提供相同图像的不同分辨率,如缩略图、预览或精细,并在不同时间显示它们,例如如果光标悬停短于 1 秒,则仅显示缩略图,如果超过 5 秒则显示精细图片。
  4. 最好给用户一些配置这些的方法。
于 2012-06-18T23:54:51.430 回答