wpf图片轮播(未释放资源)



今天有个临时需求,做图片轮播,以前做了一个,找不到了。

想了个简单的方法临时拿着用,这里先记着有空再来改。

上代码-----》

using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Threading;

namespace wpf图片轮播
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(0.1);
            timer.Tick += timer1_Tick;
            //timer.Start();

        }
        /// <summary>
        /// 鼠标点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button_Click(object sender, RoutedEventArgs e)
        {

            list.Children.Clear();
            string[] s = SearchFolder(textBox.Text);
            BitmapImage_Source = new BitmapImage[s.Length];
            int i = 0;
            foreach (string item in s)
            {
                BitmapImage_Source[i] = new BitmapImage(new Uri(@"" + item, UriKind.Absolute)); ;
                i++;
                TextBox cc = new TextBox();
                cc.Text = item;
                list.Children.Add(cc);
            }
            timer.Start();
        }
        private DispatcherTimer timer;

        /// <summary>
        /// 测试timer用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void timer_Tick(object sender, EventArgs e)
        {
            this.Title = string.Concat("TimerWindow  ", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
        }
        /// <summary>
        /// 改变图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            //(你的定时处理)
            this.Dispatcher.Invoke(new Action(() =>
            {
                image.Source = BitmapImage_Source[pic_now];
                pic_now++;
                if (pic_now > BitmapImage_Source.Length - 1) { pic_now = 0; }
            }));
        }
        BitmapImage[] BitmapImage_Source;
        int pic_now = 0;
        /// <summary>
        /// 搜出路径下 文件路径
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        public static string[] SearchFolder(string dir)
        {
            string[] images = null;
            if (System.IO.Directory.Exists(dir))    //如果存在这个文件夹删除之   
            {
                int image_sum = 0;
                foreach (string files in System.IO.Directory.GetFiles(dir))
                {
                    if (files.Contains(".JPG") || files.Contains(".jpg") || files.Contains(".JPEG") || files.Contains(".jpeg") || files.Contains(".bmp") || files.Contains(".BMP") || files.Contains(".GIF") || files.Contains(".gif") || files.Contains(".PNG") || files.Contains(".png"))
                    {
                        image_sum++;
                    }
                }
                images = new string[image_sum];
                image_sum = 0;
                foreach (string files in System.IO.Directory.GetFiles(dir))
                {
                    if (files.Contains(".JPG") || files.Contains(".jpg") || files.Contains(".JPEG") || files.Contains(".jpeg") || files.Contains(".bmp") || files.Contains(".BMP") || files.Contains(".GIF") || files.Contains(".gif") || files.Contains(".PNG") || files.Contains(".png"))
                    {
                        images[image_sum] = files;
                        image_sum++;
                    }
                }
            }

            return images;
        }
    }
}

xaml 部分


<Window x:Class="wpf图片轮播.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:wpf图片轮播"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="53*"/>
            <RowDefinition Height="11*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="160*"/>
            <ColumnDefinition Width="357*"/>
        </Grid.ColumnDefinitions>
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="245,15,0,0" VerticalAlignment="Top" Width="75" Click="button_Click" Grid.Column="1" Grid.Row="1"/>
        <StackPanel x:Name="list" HorizontalAlignment="Left" Height="320" VerticalAlignment="Top" Width="160" Grid.RowSpan="2"/>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="42,15,0,0" TextWrapping="Wrap" Text="D:\工作数据\SuperPay" VerticalAlignment="Top" Width="120" Grid.Column="1" Grid.Row="1"/>
        <Image x:Name="image" Margin="0" Grid.Column="1"/>

    </Grid>
</Window>


猜你喜欢

转载自blog.csdn.net/sinat_30224769/article/details/51918949