123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- 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_Office.CustomControl
- {
- /// <summary>
- /// ColorDropBoxPop.xaml 的交互逻辑
- /// </summary>
- 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();
- }
- }
- /// <summary>
- /// ColorDropBoxPop.xaml 的交互逻辑
- /// </summary>
- public partial class ColorDropBoxPop : UserControl
- {
- public event EventHandler<Color> ColorSelected;
- public ObservableCollection<Color> RecentlyColors { get; private set; }
- public ObservableCollection<Color> ThemeColors { get; private set; }
- public ColorDropBoxPop()
- {
- InitializeComponent();
- SetLangText();
- RecentlyColors = new ObservableCollection<Color>();
- ThemeColors = new ObservableCollection<Color>();
- 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;
- }
- }
- }
|