using ComPDFKit.PDFAnnotation; using Compdfkit_Tools.Data; using ComPDFKitViewer; using ComPDFKitViewer.AnnotEvent; using System; using System.Collections.Generic; using System.Collections.ObjectModel; 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 Compdfkit_Tools.Measure.Property { /// /// MultilineProperty.xaml 的交互逻辑 /// public partial class MultilineProperty : UserControl { private AnnotAttribEvent MultilineEvent { get; set; } public ObservableCollection SizeList { get; set; } = new ObservableCollection { 6,8,9,10,12,14,18,20,24,26,28,32,30,32,48,72 }; bool IsLoadedData = false; public MultilineProperty() { InitializeComponent(); } private void NoteTextBox_TextChanged(object sender, TextChangedEventArgs e) { if (IsLoadedData) { MultilineEvent?.UpdateAttrib(AnnotAttrib.NoteText, NoteTextBox.Text); MultilineEvent?.UpdateAnnot(); } } private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { int selectIndex = Math.Max(0, FontStyleCombox.SelectedIndex); bool isBold = false; bool isItalic = false; switch (selectIndex) { case 0: isBold = false; isItalic = false; break; case 1: isBold = true; isItalic = false; break; case 2: isBold = false; isItalic = true; break; case 3: isBold = true; isItalic = true; break; default: break; } MultilineEvent?.UpdateAttrib(AnnotAttrib.IsBold, isBold); MultilineEvent?.UpdateAttrib(AnnotAttrib.IsItalic, isItalic); MultilineEvent?.UpdateAnnot(); } } private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBoxItem selectItem = FontCombox.SelectedItem as ComboBoxItem; if (selectItem != null && selectItem.Content != null) { MultilineEvent?.UpdateAttrib(AnnotAttrib.FontName, selectItem.Content.ToString()); MultilineEvent?.UpdateAnnot(); } } private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { MultilineEvent?.UpdateAttrib(AnnotAttrib.FontSize, (sender as ComboBox).SelectedItem); MultilineEvent?.UpdateAnnot(); } } private void BorderColorPickerControl_ColorChanged(object sender, EventArgs e) { SolidColorBrush checkBrush = BorderColorPickerControl.GetBrush() as SolidColorBrush; if (checkBrush != null) { MultilineEvent?.UpdateAttrib(AnnotAttrib.Color, checkBrush.Color); MultilineEvent?.UpdateAnnot(); } } private void CPDFOpacityControl_OpacityChanged(object sender, EventArgs e) { if (IsLoadedData) { MultilineEvent?.UpdateAttrib(AnnotAttrib.Transparency, CPDFOpacityControl.OpacityValue / 100D); MultilineEvent?.UpdateAnnot(); } } private void CPDFThicknessControl_ThicknessChanged(object sender, EventArgs e) { if (IsLoadedData) { MultilineEvent?.UpdateAttrib(AnnotAttrib.Thickness, CPDFThicknessControl.Thickness); MultilineEvent?.UpdateAnnot(); } } private void CPDFLineStyleControl_LineStyleChanged(object sender, EventArgs e) { MultilineEvent?.UpdateAttrib(AnnotAttrib.LineStyle, CPDFLineStyleControl.DashStyle); MultilineEvent?.UpdateAnnot(); } private void FontColorPickerControl_ColorChanged(object sender, EventArgs e) { SolidColorBrush checkBrush = FontColorPickerControl.GetBrush() as SolidColorBrush; if (checkBrush != null) { MultilineEvent?.UpdateAttrib(AnnotAttrib.FontColor, checkBrush.Color); MultilineEvent?.UpdateAnnot(); } } public void SetAnnotArgsData(PolyLineMeasureArgs annotArgs) { Dictionary attribDict = new Dictionary(); attribDict[AnnotAttrib.Color] = annotArgs.LineColor; attribDict[AnnotAttrib.Transparency] = annotArgs.Transparency; attribDict[AnnotAttrib.Thickness] = annotArgs.LineWidth; attribDict[AnnotAttrib.LineStyle] = annotArgs.LineDash; attribDict[AnnotAttrib.FontColor] = annotArgs.FontColor; attribDict[AnnotAttrib.FontName] = annotArgs.FontName; attribDict[AnnotAttrib.IsBold] = annotArgs.IsBold; attribDict[AnnotAttrib.IsItalic] = annotArgs.IsItalic; attribDict[AnnotAttrib.FontSize] = annotArgs.FontSize; attribDict[AnnotAttrib.NoteText] = annotArgs.Content; AnnotAttribEvent annotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annotArgs, attribDict); SetAnnotEventData(annotEvent); } public void SetAnnotEventData(AnnotAttribEvent annotEvent) { MultilineEvent = null; if (annotEvent != null) { foreach (AnnotAttrib attrib in annotEvent.Attribs.Keys) { switch (attrib) { case AnnotAttrib.Color: BorderColorPickerControl.SetCheckedForColor((Color)annotEvent.Attribs[attrib]); break; case AnnotAttrib.Transparency: double transparennt = Convert.ToDouble(annotEvent.Attribs[attrib]); if (transparennt > 1) { transparennt = (transparennt / 255D); } CPDFOpacityControl.OpacityValue = (int)(transparennt * 100); break; case AnnotAttrib.Thickness: CPDFThicknessControl.Thickness = Convert.ToInt16(annotEvent.Attribs[attrib]); break; case AnnotAttrib.LineStyle: CPDFLineStyleControl.DashStyle = (DashStyle)(annotEvent.Attribs[attrib]); break; case AnnotAttrib.FontColor: FontColorPickerControl.SetCheckedForColor((Color)annotEvent.Attribs[attrib]); break; case AnnotAttrib.FontName: { string fontName = (string)annotEvent.Attribs[AnnotAttrib.FontName]; if (fontName.Contains("Courier")) { FontCombox.SelectedIndex = 1; } else if (fontName == "Arial" || fontName.Contains("Helvetica")) { FontCombox.SelectedIndex = 0; } else if (fontName.Contains("Times")) { FontCombox.SelectedIndex = 2; } else { FontCombox.SelectedIndex = -1; } } break; case AnnotAttrib.FontSize: SetFontSize(Convert.ToDouble(annotEvent.Attribs[attrib])); break; case AnnotAttrib.NoteText: NoteTextBox.Text = annotEvent.Attribs[attrib].ToString(); break; default: break; } } bool isBold = false; bool isItalic = false; if (annotEvent.Attribs.ContainsKey(AnnotAttrib.IsBold)) { isBold = (bool)annotEvent.Attribs[AnnotAttrib.IsBold]; } if (annotEvent.Attribs.ContainsKey(AnnotAttrib.IsItalic)) { isItalic = (bool)annotEvent.Attribs[AnnotAttrib.IsItalic]; } SetFontStyle(isBold, isItalic); } MultilineEvent = annotEvent; } public void SetFontStyle(bool isBold, bool isItalic) { if (isBold == false && isItalic == false) { FontStyleCombox.SelectedIndex = 0; return; } if (isBold && isItalic == false) { FontStyleCombox.SelectedIndex = 1; return; } if (isBold == false && isItalic) { FontStyleCombox.SelectedIndex = 2; return; } if (isBold && isItalic) { FontStyleCombox.SelectedIndex = 3; } } private void SetFontSize(double size) { int index = SizeList.IndexOf((int)size); FontSizeComboBox.SelectedIndex = index; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { Binding SizeListbinding = new Binding(); SizeListbinding.Source = this; SizeListbinding.Path = new System.Windows.PropertyPath("SizeList"); FontSizeComboBox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding); IsLoadedData = true; } private void UserControl_Unloaded(object sender, RoutedEventArgs e) { IsLoadedData = false; } } }