1
我正在創建一個標記路徑,以在我的C#/ XAML(WPF)應用程序中的GMapControl上顯示。該控件要求我創建一個UIElement作爲標記疊加在地圖上。我已經創造了這個目的,一個非常簡單的用戶控件,如下所示:如何創建一個快速輕量級的UIElement
<UserControl x:Class="Project.Resources.Circle"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Ellipse Width="5" Height="5" Stroke="Red" Fill="Red" />
</Grid>
</UserControl>
然而,當我建行,創建任何東西到這個控制400分的情況下,我的應用程序凍結。由於我只能在UI線程上創建UserControl(而不是在Thread或BackgroundWorker中),因此我能做些什麼來加速創建新的Circle實例?
是否有更多的輕量級 UIElement比UserControl?對此的任何指導表示讚賞。
如何自UIElement直接派生並重寫了'OnRender'方法?在那裏你可以將你的圓圈繪製到傳遞的DrawingContext實例中。 – Clemens
或者你直接使用'Ellipse'而不是將它們包裝在UserControls中。 – Clemens
由於Ellipse是一個密封類,我無法使用你的第二個建議。幸運的是,我只在XAML中使用了UIElement,並使用帶有drawingContext.DrawEllipse()的OnRender嘗試了第一次,並且性能突飛猛進,超越了UserControl!你想把這個作爲答案嗎?或者我會嗎? – agc93