我正在创建一个标记路径,以便在我的C#/ XAML(WPF)应用程序中的GMapControl上显示。控件需要我创建一个UIElement作为标记叠加在地图上。我为此创建了一个非常简单的UserControl,如下所示:
<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实例?
是否存在比UserControl更多的轻量级 UIElement?对此有任何指导意见。
答案 0 :(得分:1)
您可以像这样创建一个最小的派生UIElement:
public class Circle : UIElement
{
protected override void OnRender(DrawingContext drawingContext)
{
const double radius = 2.5;
drawingContext.DrawEllipse(Brushes.Red, null, new Point(), radius, radius);
}
}