我正在为半导体晶圆图创建一个自定义控件。

这些小矩形中的每一个都需要满足以下要求: 1)显示索引的工具提示;2)可单击以包括或排除晶片图定义。
在1400×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中建议一个更好的方法来实现这一点吗?
发布于 2013-04-13 22:13:41
在设计圣诞树彩灯的时候,我遇到了同样的问题。当你使用100+项目时,使用UIElement或Shapes的速度太慢了。处理大量项目的最佳方法是使用双缓冲,并使用您自己的图像管理缓冲区和一个处理点击的结构。我已经发布了我的项目,这应该会给你一个好的开始。它可以在以下网址获得:http://sourceforge.net/projects/xlightsdesigner/
您对Controls\ChannelitemsCanvas.cs很感兴趣。它可以根据您的需要进行修改,并使用四叉树来存储矩形,以便可以快速确定点击事件。
https://stackoverflow.com/questions/15650995
复制相似问题