簡體   English   中英

如何創建快速輕量的UIElement

[英]How to create a fast and lightweight UIElement

我正在創建要在我的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? 任何對此的指導表示贊賞。

您可以創建一個最小的派生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);
    }
}

暫無
暫無

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

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