自学内容网 自学内容网

wpf中轮询显示图片

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

全部代码

1.声明一个PictureInfo类

namespace WpfApp1
{
    public class PictureInfo
    {
        public string? FileName { get; set; }
        public string? FilePath { get; set; }
    }
}

2. 前端界面

<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,格式适中

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


原文地址:https://blog.csdn.net/u012563853/article/details/140701755

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!