using MediaViewerLib.Utilities; 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.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace HistoryDLL { /// /// ThumbnailContainer.xaml 的互動邏輯 /// public partial class ThumbnailContainer : UserControl { private Storyboard sbShowStart; private Storyboard sbShowStop; private List imgPath; private int imgWidth = 211; private int imgHeight = 158; private int topBottomDiff = 10; public List ImgPath { get { return imgPath; } set { imgPath = value; LoadThumbImage(); } } public ThumbnailContainer() { InitializeComponent(); if (GlobalFunction.isSolutionUsing4K) { imgWidth *= 2; imgHeight *= 2; //topBottomDiff *= 2; } sbShowStart = FindResource("sbShowStart") as Storyboard; sbShowStart.Completed += new EventHandler(sbShowStart_Completed); sbShowStop = FindResource("sbShowStop") as Storyboard; sbShowStop.Completed += new EventHandler(sbShowStop_Completed); } private void sbShowStop_Completed(object sender, EventArgs e) { uxStackPanel.Opacity = 0.0; } private void sbShowStart_Completed(object sender, EventArgs e) { uxStackPanel.Opacity = 1.0; } public void StartOpacityAnimation() { if (sbShowStart != null) { sbShowStart.Begin(); } } public void StopOpacityAnimation() { if (sbShowStop != null) { sbShowStop.Begin(); } } private void LoadThumbImage() { uxStackPanel.VerticalAlignment = System.Windows.VerticalAlignment.Bottom; SolidColorBrush brush = new SolidColorBrush(ConfigSettingClass.EventCollect.BackgroundColor); if (imgPath.Count == 0) { Image img = new Image(); if (File.Exists(GlobalFunction.thumbPath + ConfigSettingClass.MainBackCollect.ImgLogo)) { Grid gd = new Grid(); Rectangle rectange = new Rectangle(); //ImageBrush imagebrush = new ImageBrush(new BitmapImage(new Uri(@"pack://application:,,,/" + GlobalFunction.projectname + @";component/Data/Thumb/shadow_big.png", UriKind.RelativeOrAbsolute))); ImageBrush imagebrush = null; gd.Width = imgWidth + (GlobalFunction.isSolutionUsing4K ? 8 : 5); gd.Height = imgHeight + (GlobalFunction.isSolutionUsing4K ? 8 : 5); //imagebrush.Stretch = Stretch.Fill; //gd.Background = imagebrush; gd.Background =Brushes.Gray; gd.VerticalAlignment = System.Windows.VerticalAlignment.Center; gd.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; rectange.VerticalAlignment = System.Windows.VerticalAlignment.Top; rectange.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; img.Width = rectange.Width = imgWidth; img.Height = rectange.Height = imgHeight; //img.Margin = new Thickness(-(GlobalFunction.isSolutionUsing4K ? 10 : 5), -(GlobalFunction.isSolutionUsing4K ? 10 : 5), 0, 0); img.Margin = rectange.Margin = new Thickness(3, 2, 0, 0); img.Source = new BitmapImage(new Uri(GlobalFunction.thumbPath + ConfigSettingClass.MainBackCollect.ImgLogo)); rectange.Fill = brush; gd.Children.Add(rectange); gd.Children.Add(img); gd.Margin = GlobalFunction.isSolutionUsing4K ? new Thickness(0, 0, 0, topBottomDiff) : new Thickness(0, 0, 0, 0); uxStackPanel.Children.Add(gd); } } else { for (int i = 0; i < imgPath.Count; i++) { BitmapSource src = MediaUtilties.LoadThumbnailImage(imgPath[i], ThumbnailSize.Large); Grid gd = new Grid(); //ImageBrush imagebrush = new ImageBrush(new BitmapImage(new Uri(@"pack://application:,,,/" + GlobalFunction.projectname + @";component/Data/Thumb/shadow_big.png", UriKind.RelativeOrAbsolute))); ImageBrush imagebrush = new ImageBrush(new BitmapImage(new Uri(System.IO.Path.Combine(GlobalFunction.thumbPath,"shadow_big.png"), UriKind.RelativeOrAbsolute))); Image img = new Image(); Rectangle rectange = new Rectangle(); gd.Width = imgWidth + (GlobalFunction.isSolutionUsing4K ? 8 : 5); gd.Height = imgHeight + (GlobalFunction.isSolutionUsing4K ? 8 : 5); //gd.Background = new SolidColorBrush(Colors.Red); imagebrush.Stretch = Stretch.Fill; gd.Background = imagebrush; gd.VerticalAlignment = System.Windows.VerticalAlignment.Center; gd.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; img.VerticalAlignment = rectange.VerticalAlignment = System.Windows.VerticalAlignment.Top; img.HorizontalAlignment = rectange.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; img.Width = rectange.Width = imgWidth; img.Height = rectange.Height = imgHeight; img.Stretch = Stretch.UniformToFill; img.Source = src; rectange.Fill = brush; img.Margin = rectange.Margin = new Thickness(3, 2, 0, 0); //gd.Margin = new Thickness(0, topBottomDiff, 0, 0); gd.Children.Add(rectange); gd.Children.Add(img); gd.Margin = GlobalFunction.isSolutionUsing4K ? new Thickness(0, 0, 0, topBottomDiff) : new Thickness(0, 0, 0, 0); uxStackPanel.Children.Add(gd); } } } } }