wpf中轮询显示图片

本文的需求是,在一个文件夹中,放一堆图片的集合,然后在wpf程序中,按照定时的方式,循序显示照片。

全部代码

1.声明一个PictureInfo类

cs 复制代码
namespace WpfApp1
{
    public class PictureInfo
    {
        public string? FileName { get; set; }
        public string? FilePath { get; set; }
    }
}
  1. 前端界面
cs 复制代码
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>
        <Button Content="开始" Click="Button_Click" />
        <UniformGrid Grid.Row="2" Rows="2" Columns="5" Background="Beige"   >
            <!--<TextBlock Text="123"/>
     <Image Source="/imgs/1.jpg"   Height="180" />-->
            <StackPanel Margin="5,0,0,0"  >
                <TextBlock x:Name="txt1"  />
                <Image x:Name="img1"    Height="180" />
            </StackPanel>
            <StackPanel Margin="5,0,0,0">
                <TextBlock x:Name="txt2"  />
                <Image  x:Name="img2"    Height="180" />
            </StackPanel>
            <StackPanel Margin="5,0,0,0">
                <TextBlock  x:Name="txt3" />
                <Image   x:Name="img3"    Height="180" />
            </StackPanel>
            <StackPanel  Margin="5,0,5,0">
                <TextBlock x:Name="txt4" />
                <Image  x:Name="img4"    Height="180" />
            </StackPanel>
            <StackPanel  Margin="5,0,0,0">
                <TextBlock x:Name="txt5" />
                <Image x:Name="img5"     Height="180" />
            </StackPanel>
            <StackPanel  Margin="5,0,0,0">
                <TextBlock x:Name="txt6" />
                <Image   x:Name="img6"    Height="180" />
            </StackPanel>
            <StackPanel Margin="5,0,0,0" >
                <TextBlock x:Name="txt7" />
                <Image x:Name="img7"    Height="180" />
            </StackPanel>
            <StackPanel  Margin="5,0,5,0">
                <TextBlock x:Name="txt8" />
                <Image x:Name="img8"     Height="180" />
            </StackPanel>
            <StackPanel Margin="5,0,0,0" >
                <TextBlock x:Name="txt9" />
                <Image x:Name="img9"    Height="180" />
            </StackPanel>
            <StackPanel  Margin="5,0,5,0">
                <TextBlock x:Name="txt10" />
                <Image x:Name="img10"     Height="180" />
            </StackPanel>
        </UniformGrid>
    </StackPanel>
</Window>

3.后端代码

此处的fileNames可以换做内存读取图片的集合

补充:在内存中转化图片的时候,有很多格式,其中

jpg,格式小

bmp,格式大

png,格式适中

cs 复制代码
using System.IO;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Threading;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        /// <summary>
        /// 计时器
        /// </summary>
        DispatcherTimer timer = new DispatcherTimer();

        //获取图片的数据
        string[] fileNames = null;
        public MainWindow()
        {
            InitializeComponent();

            timer.Interval = new TimeSpan(0, 0, 2);//时 分 秒
            timer.Tick += new EventHandler(timer_Tick);

            fileNames = Directory.GetFiles(@"C:\\Users\\60287\\Desktop\\Excel\\3", "*.jpg");
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            timer.Start();
        }
        /// <summary>
        /// 计时器事件
        /// </summary>
        int count = 0;
        private void timer_Tick(object sender, EventArgs e)
        {
            if (count == 12)//12组照片,每组10张照片
            {
                count = 0;//播放完毕,重新开始
            }
            List<PictureInfo> lstPics = new List<PictureInfo>();
            var data = fileNames.Skip(10 * count).Take(10);
            count++;
            for (int i = 0; i < data.Count(); i++)
            {
                PictureInfo pic = new PictureInfo();
                pic.FileName = "Picture" + i.ToString();
                pic.FilePath = data.ToArray()[i].ToString();
                lstPics.Add(pic);
            }
            txt1.Text = lstPics[0].FileName;
            img1.Source = new BitmapImage(new Uri(lstPics[0].FilePath));

            txt2.Text = lstPics[1].FileName;
            img2.Source = new BitmapImage(new Uri(lstPics[1].FilePath));

            txt3.Text = lstPics[2].FileName;
            img3.Source = new BitmapImage(new Uri(lstPics[2].FilePath));

            txt4.Text = lstPics[3].FileName;
            img4.Source = new BitmapImage(new Uri(lstPics[3].FilePath));

            txt5.Text = lstPics[4].FileName;
            img5.Source = new BitmapImage(new Uri(lstPics[4].FilePath));

            txt6.Text = lstPics[5].FileName;
            img6.Source = new BitmapImage(new Uri(lstPics[5].FilePath));

            txt7.Text = lstPics[6].FileName;
            img7.Source = new BitmapImage(new Uri(lstPics[6].FilePath));

            txt8.Text = lstPics[7].FileName;
            img8.Source = new BitmapImage(new Uri(lstPics[7].FilePath));

            txt9.Text = lstPics[8].FileName;
            img9.Source = new BitmapImage(new Uri(lstPics[8].FilePath));

            txt10.Text = lstPics[9].FileName;
            img10.Source = new BitmapImage(new Uri(lstPics[9].FilePath));
        }
    }
}

4.运行效果

本文来源:

wpf中轮询显示图片-CSDN博客

源码地址:

https://download.csdn.net/download/u012563853/89580787

相关推荐
△曉風殘月〆4 小时前
WPF中的坐标转换
wpf
一个天蝎座 白勺 程序猿8 小时前
深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库
数据库·.net·wpf·kingbase·金仓数据库
时光追逐者9 小时前
一个使用 WPF 开发的 Diagram 画板工具(包含流程图FlowChart,思维导图MindEditor)
c#·.net·wpf·流程图
Vae_Mars9 小时前
WPF中的DataTemplate
wpf
Aevget9 小时前
界面控件DevExpress WPF v25.2新功能预览 - 聚焦AI功能提升
人工智能·wpf·界面控件·devexpress·ui开发·.net 10
csdn_aspnet12 小时前
如何从 WPF 控件 DataGrid 中删除多余的列
wpf·datagrid
张人玉14 小时前
C#WPF如何实现登录页面跳转
ui·c#·wpf
张人玉14 小时前
C#WPF如何跳转页面
笔记·ui·c#·wpf
.NET修仙日记16 小时前
.NET WinForms + WPF 综合学习路线:从传统到现代的.NET桌面开发
学习·c#·.net·wpf·.net core·winforms
猫林老师18 小时前
鸿蒙元服务开发:免安装的卡片式服务(Atomic Service)
华为·wpf·harmonyos