簡體   English   中英

WPF畫布中超過200萬個矩形

[英]More than 2 millions rectangles in a WPF canvas

我正在為半導體晶圓圖創建自定義控件 在此處輸入圖片說明

每個小矩形都需要滿足以下要求; 1)顯示索引的工具提示2)可單擊以包括或排除在晶圓圖定義之外。

在1400 x 1450晶粒的情況下,晶圓圖中的晶粒總數可能不會超過200萬。

在某些時候,我需要在窗口中顯示所有模具(大多數單擊將在縮放視圖中進行)。

目前,我正在使用Rectangle形狀分別添加每個模具,並將工具提示的坐標信息(如(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中實現此目標的更好方法?

在為聖誕樹燈設計設計師時,我遇到了同樣的問題。 當您獲得100多個項目時,使用UIElement或Shapes太慢了。 處理大量項目的最佳方法是使用雙緩沖以及您自己的圖像托管緩沖區和用於處理點擊的結構。 我已經發布了我的項目,這應該為您提供一個良好的開端。 可以在以下位置獲得它: http : //sourceforge.net/projects/xlightsdesigner/

您對Controls \\ ChannelitemsCanvas.cs感興趣。 可以對其進行修改以適合您的需求,並使用四叉樹存儲矩形,以便可以快速確定單擊事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM