1. 程式人生 > >wpf圖片輪播(未釋放資源)

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>


相關推薦

wpf圖片釋放資源

今天有個臨時需求,做圖片輪播,以前做了一個,找不到了。 想了個簡單的方法臨時拿著用,這裡先記著有空再來改。 上程式碼-----》 using System; using System.IO; using System.Windows; using System.Windo

原生JS做圖片自動或手動

前言     前端基本上靠用現成的封裝好的控制元件的我,今天也算是自己改了一回程式碼,也自己寫了寫原生JS,改了一下響應程式碼。需求是這樣的,頁面的記錄中有多個附件,如果附件是圖片的話,檢視圖片時要多張圖片進行輪播,實際需求是不能自動,要手動控制圖片切換。說起來也不難,用

Android--圖片banner

使用步驟 Step 1.依賴banner Gradle dependencies{ compile 'com.youth.banner:banner:1.4.10' //最新版本 } 或者引用本地lib compile project(':bann

JavaScript實現簡單的圖片通過點選左右焦點切換

最終實現效果圖 程式碼塊 <!DOCTYPE html> <html lang="en"> <head> <meta charset

android 圖片自動迴圈

實現思路就是通過viewPager自定義元件,支援圖片點選、手動滑動、自動輪播、初始化定位位置。不廢話了先上圖 元件下載 元件使用 public class BannerAutoActivity

TextView水平流水燈效果

Layout的效果: <view.HomeTextView android:id="@+id/tv_home_marquee" android:singleLine="true" a

better-scroll 1.0+版本

最近因為vue不是很熟練,所以看了慕課網的移動端音樂app。 但是在跟著做輪播圖的時候發現很多問題,迴圈不出來,自動輪播不出來等問題,發現是版本不對。解決完之後做個mark,如果你們也遇到這樣的問題,希望對你們有用 首先是slider.vue <tem

圖片 及通知公告上滾動 無空隙滾動

空隙 pts ext slide cti remove clear lap tco 圖片輪播 1、樣式 <style> #banner { padding: 0px; width: 404px;

JS實現定時操作 圖片效果setInterval

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script> window.onload=functi

圖片的實現html js

1.簡單實現 1)實現思想:通過輪播次數來決定顯示那一張首先,可以用簡單的div 包含img的框架來實現,我們為他新增按鈕,每個按鈕對應不同的圖片,那麼,每點選一次,將要顯示的圖片的style.dispay屬性設定為'block'將不顯示的圖片的display設定為none,可以實現簡單的按

判斷是否有網路+PullToRefreshListView+新增資料庫+無線本地圖片

1.巢狀的Fragment頁面 dao層+sql語句:https://blog.csdn.net/weixin_43587850/article/details/84204659 public class Sone extends Fragment { private ViewPa

jquery實現圖片向左慢慢滑鼠懸停圖片停止

window.onload=function(){ function $(id){ return document.getElementById(id); } var num=0; function autopl

【第五篇】Qt學習與使用---自定義的圖片滾動播放圖片

1、目標 編寫一個類,可以展示幾張圖片。類似於現在流行的視訊播放器的首頁中出現的滾動展示的控制元件。   2、 具體要求 (1)一次性展示三張圖片,左中右。中間的圖片至於頂部,旁邊的圖片被覆蓋,只露出一部分。 (2) 切換圖片的時候,呈現動態效果,需要有一個移動的過程。

微信小程式----gallery slider圖片元件

wxml <scroll-view scroll-y="true" style="height:200px" class="page-body" bindscrolltolowe

Android 廣告banner圖片圖片瀏覽、仿微信大圖檢視控制元件支援視訊和gif圖片、支援動態新增資料

    之前專案需要做個仿微信檢視大圖,需要新增圓形下載進度,支援視訊和圖片切換等一系列功能控制元件,自己抽空把開發的自定義控制元件的成果重新構造、整理處理封裝成庫(aar),提供出來,有需要朋友,歡迎使用,如果有什麼建議歡迎留言或者GitHub上提issues

android實現圖片+文字帶文字

activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

Bootstrapcarousel外掛中圖片變形的終極解決方案——使用jqthumb.js

在頂求網的首頁中我使用了BootStrap的輪播(carousel)外掛來展示文章中的圖片。我在程式中自動抓取文章的第一張圖片作為該輪播控制元件中要顯示的圖片,由於文章的圖片大小不一,而輪播外掛的大小基本是固定的,所以展示的時候圖片出現了變形。在網上找了很多中方式也沒有解決(過程曲折,不再贅述),直到找到了

圖片的兩種實現方式

專案中用到的第一種方法,學習借鑑了https://github.com/qingse/ImageSlideshow 自定義ImageSlideshow,繼承自FrameLayout,在構造方法中,初始化資料: public ImageSlideshow(Context c

imageSwitch圖片使用程式碼詳解

package liu; import com.example.demo_0330.R; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; imp

JS實現圖片效果自動和手動

本次輪播效果圖如下:具有以下功能:1.自動播放(滑鼠進入顯示區域時停止播放) 2.左右焦點切換  3.底下小按鈕切換以下為實現程式碼:首先是html程式碼:<!DOCTYPE html> <html lang="en"> <head>