2

我正在为半导体晶片图创建自定义控件在此处输入图像描述

这些小矩形中的每一个都需要满足以下要求;1) 显示索引的工具提示 2) 可单击以在晶片图定义中包含或排除。

在 1400 x 1450 裸片的情况下,晶圆图中的裸片数量可能超过 200 万个。

在某些时候,我需要在一个窗口中显示所有模具(大部分点击将在放大视图中发生)。

目前,我正在使用矩形形状分别添加每个模具,并将工具提示的坐标信息(如 (10,10) 的索引)存储为附加属性。

我对每个模具使用不同的样式;取决于模具的某些计算和位置。

DieStyle1 = new Style { TargetType = typeof(Rectangle) };
DieStyle1.Setters.Add(new Setter(Shape.FillProperty, Brushes.MediumSlateBlue));
DieStyle1.Setters.Add(new Setter(Shape.StrokeProperty, Brushes.White));
DieStyle1.Setters.Add(new EventSetter(MouseDownEvent, new MouseButtonEventHandler(DieStyle1_MouseDown)));

这种方法很慢并且也使用高内存。所以建议在 WPF 中实现这一目标的更好方法?

4

1 回答 1

1

在为圣诞树灯创建设计师时,我遇到了同样的问题。当您获得 100 多个项目时,使用 UIElement 或 Shapes 太慢了。处理大量项目的最佳方法是使用双缓冲和您自己管理的图像缓冲区和处理点击的结构。我已经发布了我的项目,应该会给你一个好的开始。可在以下网址获得:http: //sourceforge.net/projects/xlightsdesigner/

您对 Controls\ChannelitemsCanvas.cs 感兴趣。它可以根据您的需要进行修改,并使用四叉树来存储矩形,以便可以快速确定点击事件。

于 2013-04-13T14:13:40.587 回答