using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
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;
using WinForm = System.Windows.Forms;
namespace PDF_Master.CustomControl
{
///
/// ColorDropBoxPop.xaml 的交互逻辑
///
public class ColorToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is Color)
{
return new SolidColorBrush((Color)value);
}
return Brushes.Transparent;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
///
/// ColorDropBoxPop.xaml 的交互逻辑
///
public partial class ColorDropBoxPop : UserControl
{
public event EventHandler ColorSelected;
public ObservableCollection RecentlyColors { get; private set; }
public ObservableCollection ThemeColors { get; private set; }
public ColorDropBoxPop()
{
InitializeComponent();
SetLangText();
RecentlyColors = new ObservableCollection();
ThemeColors = new ObservableCollection();
CreateThemeColors();
RecentlyColorList.ItemsSource = RecentlyColors;
ThemeColorList.ItemsSource = ThemeColors;
}
private void SetLangText()
{
//RecentlyColorText.Text = App.MainPageLoader.GetString("Themes_RecentlyUsed");
//TransparentText.Text = App.MainPageLoader.GetString("Themes_Transparent");
//OtherColorsText.Text = App.MainPageLoader.GetString("Themes_More");
//ThemeColorsText.Text = App.MainPageLoader.GetString("ProperPanel_Color");
}
public void CreateThemeColors()
{
ThemeColors.Add(Color.FromRgb(0xFF, 0xFF, 0xFF));
ThemeColors.Add(Color.FromRgb(0x00, 0x00, 0x00));
ThemeColors.Add(Color.FromRgb(0x25, 0x1C, 0x16));
ThemeColors.Add(Color.FromRgb(0xCC, 0x00, 0x00));
ThemeColors.Add(Color.FromRgb(0xCC, 0x4E, 0x00));
ThemeColors.Add(Color.FromRgb(0x99, 0x70, 0x00));
ThemeColors.Add(Color.FromRgb(0x1C, 0x70, 0x17));
ThemeColors.Add(Color.FromRgb(0x00, 0x8D, 0x99));
ThemeColors.Add(Color.FromRgb(0x00, 0x3F, 0x99));
ThemeColors.Add(Color.FromRgb(0x61, 0x00, 0x99));
ThemeColors.Add(Color.FromRgb(0x88, 0x88, 0x88));
ThemeColors.Add(Color.FromRgb(0x1B, 0x1B, 0x1B));
ThemeColors.Add(Color.FromRgb(0x4A, 0x37, 0x2C));
ThemeColors.Add(Color.FromRgb(0xFF, 0x00, 0x00));
ThemeColors.Add(Color.FromRgb(0xFF, 0x61, 0x00));
ThemeColors.Add(Color.FromRgb(0xCC, 0x96, 0x00));
ThemeColors.Add(Color.FromRgb(0x27, 0x9D, 0x20));
ThemeColors.Add(Color.FromRgb(0x00, 0xBC, 0xCC));
ThemeColors.Add(Color.FromRgb(0x00, 0x54, 0xcc));
ThemeColors.Add(Color.FromRgb(0x82, 0x00, 0xcc));
ThemeColors.Add(Color.FromRgb(0xA0, 0xA0, 0xA0));
ThemeColors.Add(Color.FromRgb(0x29, 0x29, 0x29));
ThemeColors.Add(Color.FromRgb(0x6E, 0x53, 0x42));
ThemeColors.Add(Color.FromRgb(0xFF, 0x33, 0x33));
ThemeColors.Add(Color.FromRgb(0xFF, 0x81, 0x33));
ThemeColors.Add(Color.FromRgb(0xFF, 0xBB, 0x00));
ThemeColors.Add(Color.FromRgb(0x32, 0xCA, 0x29));
ThemeColors.Add(Color.FromRgb(0x00, 0xEB, 0xFF));
ThemeColors.Add(Color.FromRgb(0x00, 0x69, 0xFF));
ThemeColors.Add(Color.FromRgb(0xA2, 0x00, 0xFF));
ThemeColors.Add(Color.FromRgb(0xB8, 0xB8, 0xB8));
ThemeColors.Add(Color.FromRgb(0x44, 0x44, 0x44));
ThemeColors.Add(Color.FromRgb(0x93, 0x6E, 0x58));
ThemeColors.Add(Color.FromRgb(0xFF, 0x66, 0x66));
ThemeColors.Add(Color.FromRgb(0xFF, 0xA0, 0x66));
ThemeColors.Add(Color.FromRgb(0xFF, 0xC9, 0x33));
ThemeColors.Add(Color.FromRgb(0x38, 0xE0, 0x2E));
ThemeColors.Add(Color.FromRgb(0x33, 0xEF, 0xFF));
ThemeColors.Add(Color.FromRgb(0x33, 0x87, 0xFF));
ThemeColors.Add(Color.FromRgb(0xB5, 0x33, 0xFF));
ThemeColors.Add(Color.FromRgb(0xCF, 0xCF, 0xCF));
ThemeColors.Add(Color.FromRgb(0x5F, 0x5F, 0x5F));
ThemeColors.Add(Color.FromRgb(0xB8, 0x8A, 0x6E));
ThemeColors.Add(Color.FromRgb(0xFF, 0x99, 0x99));
ThemeColors.Add(Color.FromRgb(0xFF, 0xB0, 0x80));
ThemeColors.Add(Color.FromRgb(0xFF, 0xD6, 0x66));
ThemeColors.Add(Color.FromRgb(0x60, 0xE6, 0x58));
ThemeColors.Add(Color.FromRgb(0x66, 0xF3, 0xFF));
ThemeColors.Add(Color.FromRgb(0x66, 0xA5, 0xFF));
ThemeColors.Add(Color.FromRgb(0xC7, 0x66, 0xFF));
ThemeColors.Add(Color.FromRgb(0xE7, 0xE7, 0xE7));
ThemeColors.Add(Color.FromRgb(0x7A, 0x7A, 0x7A));
ThemeColors.Add(Color.FromRgb(0xC6, 0xA1, 0x8B));
ThemeColors.Add(Color.FromRgb(0xFF, 0xCC, 0xCC));
ThemeColors.Add(Color.FromRgb(0xFF, 0xC4, 0x9F));
ThemeColors.Add(Color.FromRgb(0xFF, 0xE4, 0x99));
ThemeColors.Add(Color.FromRgb(0x88, 0xEC, 0x82));
ThemeColors.Add(Color.FromRgb(0x99, 0xF7, 0xFF));
ThemeColors.Add(Color.FromRgb(0x99, 0xC3, 0xFF));
ThemeColors.Add(Color.FromRgb(0xDA, 0x99, 0xFF));
}
private void SystemColorPicker_ClickPop(object sender, MouseButtonEventArgs e)
{
this.Visibility = Visibility.Collapsed;
WinForm.ColorDialog colorPicker = new WinForm.ColorDialog();
WinForm.DialogResult result = colorPicker.ShowDialog();
if (result == WinForm.DialogResult.OK)
{
Color selectColor = Color.FromArgb(colorPicker.Color.A, colorPicker.Color.R, colorPicker.Color.G, colorPicker.Color.B);
AddColorToRecent(selectColor);
if (ColorSelected != null)
{
ColorSelected?.Invoke(this, selectColor);
}
}
}
private void TransparentColor_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (ColorSelected != null)
{
ColorSelected?.Invoke(this, Colors.Transparent);
}
this.Visibility = Visibility.Collapsed;
}
private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.Visibility = Visibility.Collapsed;
Rectangle clickRectangle = sender as Rectangle;
if (clickRectangle != null)
{
SolidColorBrush fillBrush = clickRectangle.Fill as SolidColorBrush;
if (fillBrush != null)
{
AddColorToRecent(fillBrush.Color);
if (ColorSelected != null)
{
ColorSelected?.Invoke(this, fillBrush.Color);
}
}
}
}
public void AddColorToRecent(Color recentColor)
{
if(recentColor==Colors.Transparent)
{
return;
}
if (RecentlyColors.AsEnumerable().Where(x => x == recentColor).Count() == 0)
{
while (RecentlyColors.Count >= 10)
{
RecentlyColors.RemoveAt(0);
}
RecentlyColors.Add(recentColor);
}
}
public void SetTransparentPanelVisible(bool visible)
{
TransparentPanel.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
}
}
}