using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace ImageLoader { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { private List _imageList; private List _imageControlList; public MainWindow() { InitializeComponent(); InitInstance(); } private void InitInstance() { _imageList = new List(); _imageControlList = new List(); } private void btnFolder_Click(object sender, RoutedEventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == true) { string fullPath = dlg.FileName; string fileName = dlg.SafeFileName; string path = fullPath.Replace(fileName, ""); txtFolder.Text = path; string[] files = Directory.GetFiles(path); _imageList = files.Where(f => f.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase) >= 0 || f.IndexOf(".png", StringComparison.OrdinalIgnoreCase) >= 0) .ToList(); } CreateImage(_imageList); } private void CreateImage(List imageList) { for (int i = 0; i < imageList.Count; i++) { Image image = CreateBitmap(imageList[i]); _imageControlList.Add(image); image.MouseDown += Image_MouseDown; pnlImage.Children.Add(image); } } private void Image_MouseDown(object sender, MouseButtonEventArgs e) { Image image = sender as Image; if (image == null) return; //WrapPanel parent = image.Parent as WrapPanel; //if (parent != null) // parent.Children.Clear(); Image newImage = CreateBitmap(image.Source.ToString(), 1000); newImage.Stretch = Stretch.UniformToFill; cvsImage.Children.Clear(); cvsImage.Children.Add(newImage); //CreateImage(_imageList); } private Image CreateBitmap(string path, int widthPixel = 300) { BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.CacheOption = BitmapCacheOption.OnDemand; bitmap.CreateOptions = BitmapCreateOptions.DelayCreation; bitmap.DecodePixelWidth = widthPixel; bitmap.UriSource = new Uri(path); bitmap.EndInit(); Image img = new Image(); img.Source = bitmap; return img; } } }