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

来源:互联网 发布:大数据与BI 编辑:程序博客网 时间:2024/06/05 10:44


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

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

上代码-----》

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>


0 0
原创粉丝点击