首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF画布中有200多万个矩形

WPF画布中有200多万个矩形
EN

Stack Overflow用户
提问于 2013-03-27 10:33:21
回答 1查看 2.4K关注 0票数 2

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

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

在1400×1450芯片的情况下,晶片图中的芯片数可以超过200万。

在某些情况下,我需要在一个窗口中显示所有的模具(大多数点击将发生在缩放视图中)。

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

我使用不同的风格每个模具;取决于一定的计算和位置的模具。

代码语言:javascript
复制
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中建议一个更好的方法来实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-13 22:13:41

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15650995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档