如何以编程方式将图像放入进度条(WPF)

Posted

技术标签:

【中文标题】如何以编程方式将图像放入进度条(WPF)【英文标题】:How to put an image in a progress bar programmatically (WPF) 【发布时间】:2015-11-26 16:45:16 【问题描述】:

我是 WPF 的新手,我需要一些帮助,将图像放在我的进度条中(以编程方式)。

我发现了这个(并且有效):

<ProgressBar.Template>
    <ControlTemplate>
        <Grid>
            <Image Name="PART_Track" Source="MyImage" Stretch="Fill"/>
            <Rectangle Name="PART_Indicator" Fill="BlanchedAlmond" HorizontalAlignment="Left"/>
        </Grid>
    </ControlTemplate>
</ProgressBar.Template>

我只是需要一些帮助将 XAML 代码转换为 C# 代码。

【问题讨论】:

什么是正则码? @nvartak 我的意思是 C# 代码。我需要在 C# 中以编程方式从 XAML 代码中重现效果。我正在制作一个带有多个主题的自定义进度条(您可以通过右键单击进度条在运行时使用 ContextMenu 更改当前主题)并且我不想做很多样式。 【参考方案1】:

这会让你开始:

FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid));

FrameworkElementFactory image = new FrameworkElementFactory(typeof(Image));
image.Name = "PART_Track";
ImageSource source = new BitmapImage(...); // create it
image.SetValue(Image.SourceProperty, source);
image.SetValue(Image.StretchProperty, Stretch.Fill);

grid.AppendChild(image);

FrameworkElementFactory rectangle = new FrameworkElementFactory(typeof(Rectangle));
rectangle.Name = "PART_Indicator";
rectangle.SetValue(Rectangle.FillProperty, new SolidColorBrush(Colors.BlanchedAlmond));
rectangle.SetValue(Rectangle.HorizontalAlignmentProperty, HorizontalAlignment.Left);

grid.AppendChild(rectangle);

    ControlTemplate ct = new ControlTemplate(typeof(ProgressBar));
ct.VisualTree = grid;

MyProgressBar1.Template = ct;

【讨论】:

以上是关于如何以编程方式将图像放入进度条(WPF)的主要内容,如果未能解决你的问题,请参考以下文章

我们如何以编程方式在 Android Q OS 中实现可搜索的进度条?

如何在 WPF 中制作选取框进度条?

[WPF] 使用三种方式实现弧形进度条

javascript 以编程方式设置进度条宽度

用WPF如何制作QQ播放器那个音乐进度条(如下图:)

如何在 wpf 中制作多色分段进度条?