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);
}
}
}
}
}