How to create Random PictureViewer application using XAML




Here I will show how to create an application through which we can access pictures from computer drives.












 Code for name.cs

using System;
using Windows.Storage;
using Windows.UI.Xaml.Media.Imaging;
namespace RemoveUnwantedFilesfromMp3Folders.Models
{
    public class MyFile
    {
        public int Id { get; set; }
        public StorageFile StoreFile { get; set; }
        public string tittle { get; set; }
        public DateTimeOffset dateTaken { get; set; }
        public string cameralModel { get; set; }
        public string cameralManufacture { get; set; }
        public string Name { get; set; }
        public double latitude { get; set; }
        public double longtitude { get; set; }
        public bool Selected { get; set; }
        public bool used { get; set; }
       // public IObservable<StorageFile> FirstorDefault { get; set; }
        public BitmapImage Images;
    }
}



Application Code:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.FileProperties;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging;

using Windows.UI.Xaml.Media;
using System.Linq;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace RemoveUnwantedFilesfromMp3Folders
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public static string png = ".png";
        public static string jpg = ".jpg";
        private ObservableCollection<MyFile> obserfiles;
        private ObservableCollection<StorageFile> AllFiles;
        public MainPage()
        {
            this.InitializeComponent();
            obserfiles = new ObservableCollection<MyFile>();
        }
         private async Task RetrieveFilesFromFolders(ObservableCollection<StorageFile> list, StorageFolder parent)
        {
            foreach (var item in await parent.GetFilesAsync())
            {
                if (item.FileType == png || item.FileType == jpg)
                  list.Add(item);
             }
                foreach (var item in await parent.GetFoldersAsync())
             {
                await RetrieveFilesFromFolders(list, item);
             }

       }
        // Create  helper File remover
        private  async Task <List<StorageFile>>                                                                                                 NotMp3FilesAlreadyAddedto(ObservableCollection<StorageFile> allFiles)
        {
            Random random = new Random();
            var FileCounts = allFiles.Count;
            var NotMp3Files = new List<StorageFile>();

            while (NotMp3Files.Count <= FileCounts)
            {
               var RandomNumberNotMp3File = random.Next(FileCounts);
                var NotMp3File =  allFiles[RandomNumberNotMp3File];
         
       
                //Don't copy files 2wice
                //Don't add empty files.
              ImageProperties Notmp3ImageProperties = await                                                                                       NotMp3File.Properties.GetImagePropertiesAsync();
               /*  bool isDublicate = false;
               foreach (var file in NotMp3Files)
                {
                    var myfile = new MyFile();
                    ImageProperties fileImageProperties = await file.Properties.GetImagePropertiesAsync();
                    myfile.tittle = Notmp3ImageProperties.Title;
                    if (myfile.tittle == fileImageProperties.Title)
                         isDublicate = true;
                }
               if (!isDublicate)*/

                    NotMp3Files.Add(NotMp3File);
           }
   

            return NotMp3Files;
        }
 
        private async Task MoveNotMp3FilesTonewFolder(List<StorageFile> files)
        {
            int id = 0;
            //create a new path to move the files to.
            //
   
            foreach (var file in files)
            {
         
              ImageProperties fileImageProperties = await file.Properties.GetImagePropertiesAsync();
StorageItemThumbnail currentThumb = await                                                                                    file.GetThumbnailAsync(ThumbnailMode.ListView, 200,                                                                         ThumbnailOptions.UseCurrentScale);
                var images = new BitmapImage();
                images.SetSource(currentThumb);
                var myfile = new MyFile();
                myfile.Id = id;
                myfile.dateTaken = fileImageProperties.DateTaken;
                myfile.cameralModel = fileImageProperties.CameraModel;
                myfile.cameralManufacture = fileImageProperties.CameraManufacturer;
               // myfile.latitude = (double)fileImageProperties.Latitude;
                //myfile.longtitude = (double)fileImageProperties.Longitude;
                myfile.Images = images;
                myfile.StoreFile = file;
                obserfiles.Add(myfile);
                id++;
            }
        }
        private async Task<ObservableCollection<StorageFile>> setupPictureList()
        { // 1. Get access to picture library

            StorageFolder folder = KnownFolders.PicturesLibrary;
 var allFiles = new ObservableCollection<StorageFile>();
await RetrieveFilesFromFolders(allFiles, folder);
 return allFiles;
        }
        private async Task PrepareNewGame()
        {
              obserfiles.Clear();
            // 2. choose random picture from librabry
            var NotMp3Files = await NotMp3FilesAlreadyAddedto(AllFiles);

            // 3.Pluck off meta data from selected pictures
            await MoveNotMp3FilesTonewFolder(NotMp3Files);
        }

        private void HamburgerButton_Click(object sender, RoutedEventArgs e)
        {
            MySplitView.IsPaneOpen = !MySplitView.IsPaneOpen;
        }
 
        private async void LoadUpPicture_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (RandomlyPictureLoader.IsSelected)
            {
                SolidColorBrush brush = new SolidColorBrush(Colors.Blue);

                InstructionTextBlock.TextWrapping = TextWrapping.Wrap;
                InstructionTextBlock.Text = RandomPicloaderTextBlock.Text;
                InstructionTextBlock.Foreground = brush;
                InstructionTextBlock.FontSize = 50;
                Developer.TextWrapping = TextWrapping.Wrap;
                Developer.Text = "@Tolulope Check Out My Hotest Collections";
                startupProgresssRing.IsActive = true;

                AllFiles = await setupPictureList();

                await PrepareNewGame();
                RandomlyPictureLoader.IsSelected = true;
                startupProgresssRing.IsActive = false;
            }
            if (Clear.IsSelected)
            {
         
                    obserfiles.Clear();
                    SolidColorBrush brush = new SolidColorBrush(Colors.Red);
                    InstructionTextBlock.Text = ClearTextBlock.Text;
                    InstructionTextBlock.Foreground = brush;
                    InstructionTextBlock.FontSize = 50;
                    Developer.Text = string.Empty;
                    RandomlyPictureLoader.IsSelected = false;
                dateTakenTextBlock.Text = string.Empty;
                pictureNameTextBlock.Text = string.Empty;
                cameralManufactureTextBlock.Text = string.Empty;
                cameralModelTextBlock.Text = string.Empty;
            }
        }

       private void SongGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            var clickedPicture = (MyFile)e.ClickedItem;// var correctPicture = from items in obserfiles where item.Selected ==    clickedPicture.Selected select item;
            foreach (var item in obserfiles)
            {
         
                //var correctedpicture = obserfiles.FirstOrDefault(itemp => itemp.Selected);
                if (item.Selected == clickedPicture.Selected)
                {
           
                    dateTakenTextBlock.Text = string.Format("Date Picture Was taken: {0}",  item.dateTaken);
                    pictureNameTextBlock.Text = string.Format("Name:{0}", item.Name);
                    cameralManufactureTextBlock.Text = string.Format("Camera Manufacture: {0}",          item.cameralManufacture);
                    cameralModelTextBlock.Text = string.Format("Camera Model:{0}",                                                     item.cameralModel);
                }
            }
         
       }

        private void InnerFlyoutButton_Click(object sender, RoutedEventArgs e)
        {

        }

        private void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {

        }
    }
}

Happy coding and hope it helps.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.

New Post

TSQL-Working With Date And Time

Here you will learn how to work with the date and time in SQL Server. select  GETDATE() as dateNow This returns the current date and time. s...