123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- using ComPDFKit.Measure;
- using Compdfkit_Tools.Helper;
- using Compdfkit_Tools.PDFControl;
- using ComPDFKitViewer.AnnotEvent;
- using ComPDFKitViewer.PdfViewer;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- 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
- {
- /// <summary>
- /// MeasureControl.xaml 的交互逻辑
- /// </summary>
- public partial class MeasureControl : UserControl
- {
- public MeasurePropertyControl measurePropertyControl = new MeasurePropertyControl();
- private CPDFDisplaySettingsControl displaySettingsControl;
- private PDFViewControl PdfViewControl = new PDFViewControl();
- private PanelState panelState = PanelState.GetInstance();
- public MeasureControl()
- {
- InitializeComponent();
- MeasureSetting.MeasureChanged += MeasureSetting_MeasureChanged;
- }
- private void MeasureSetting_MeasureChanged(object sender, MeasureEventArgs e)
- {
- InfoPanel.SetMeasureInfo(e);
- }
- #region Init PDFViewer
- public void InitWithPDFViewer(PDFViewControl pdfViewControl, CPDFViewer pdfViewer)
- {
- PdfViewControl = pdfViewControl;
- PdfViewControl.PDFView = pdfViewer;
- PDFMeasureTool.InitWithPDFViewer(pdfViewer, measurePropertyControl, this);
- FloatPageTool.InitWithPDFViewer(pdfViewer);
- PDFGrid.Child = PdfViewControl;
- panelState.PropertyChanged -= PanelState_PropertyChanged;
- panelState.PropertyChanged += PanelState_PropertyChanged;
- pdfViewControl.PDFView.AnnotActiveHandler -= PDFView_AnnotActiveHandler;
- pdfViewControl.PDFView.AnnotActiveHandler += PDFView_AnnotActiveHandler;
- }
- private void PDFView_AnnotActiveHandler(object sender, AnnotAttribEvent e)
- {
- if (e == null || e.IsAnnotCreateReset)
- {
- return;
- }
- else
- {
- switch (e.GetAnnotTypes())
- {
- case AnnotArgsType.LineMeasure:
- LineMeasureArgs LineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.LineMeasure).First() as LineMeasureArgs;
- panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
- measurePropertyControl.SetPropertyForMeasureCreate(LineArgs);
- break;
- case AnnotArgsType.PolygonMeasure:
- PolygonMeasureArgs polygonArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolygonMeasure).First() as PolygonMeasureArgs;
- panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
- measurePropertyControl.SetPropertyForMeasureCreate(polygonArgs);
- break;
- case AnnotArgsType.PolyLineMeasure:
- PolyLineMeasureArgs polyLineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolyLineMeasure).First() as PolyLineMeasureArgs;
- panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
- measurePropertyControl.SetPropertyForMeasureCreate(polyLineArgs);
- break;
- }
- }
- }
- public void SetSettingsControl(CPDFDisplaySettingsControl cPDFDisplaySettingsControl)
- {
- displaySettingsControl = cPDFDisplaySettingsControl;
- }
- public void ClearAllToolState()
- {
- PDFMeasureTool.ClearAllToolState();
- }
- public void ClearViewerControl()
- {
- PDFGrid.Child = null;
- BotaContainer.Child = null;
- PropertyContainer.Child = null;
- displaySettingsControl = null;
- }
- private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == nameof(PanelState.IsLeftPanelExpand))
- {
- ExpandLeftPanel(panelState.IsLeftPanelExpand);
- }
- else if (e.PropertyName == nameof(PanelState.RightPanel))
- {
- if (panelState.RightPanel == PanelState.RightPanelState.PropertyPanel)
- {
- ExpandRightPropertyPanel(measurePropertyControl, Visibility.Visible);
- }
- else if (panelState.RightPanel == PanelState.RightPanelState.ViewSettings)
- {
- ExpandRightPropertyPanel(displaySettingsControl, Visibility.Visible);
- }
- else
- {
- ExpandRightPropertyPanel(null, Visibility.Collapsed);
- }
- }
- }
- #endregion
- #region Expand and collapse Panel
- public void ExpandRightPropertyPanel(Visibility visible)
- {
- ExpandRightPropertyPanel(measurePropertyControl, visible);
- }
- public void ExpandNullRightPropertyPanel(Visibility visible)
- {
- ExpandRightPropertyPanel(null, visible);
- }
- public void ExpandViewSettings(Visibility visible)
- {
- SetViewSettings(displaySettingsControl, visible);
- }
- private void ExpandRightPropertyPanel(UIElement propertytPanel, Visibility visible)
- {
- PropertyContainer.Width = 260;
- PropertyContainer.Child = propertytPanel;
- PropertyContainer.Visibility = visible;
- }
- private void SetViewSettings(CPDFDisplaySettingsControl displaySettingsControl, Visibility visibility)
- {
- PropertyContainer.Child = displaySettingsControl;
- PropertyContainer.Visibility = visibility;
- }
- public void ExpandLeftPanel(bool isExpand)
- {
- BotaContainer.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
- Splitter.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
- if (isExpand)
- {
- BodyGrid.ColumnDefinitions[0].Width = new GridLength(320);
- BodyGrid.ColumnDefinitions[1].Width = new GridLength(15);
- }
- else
- {
- BodyGrid.ColumnDefinitions[0].Width = new GridLength(0);
- BodyGrid.ColumnDefinitions[1].Width = new GridLength(0);
- }
- }
- #endregion
- private void UserControl_Loaded(object sender, RoutedEventArgs e)
- {
- }
- private void MeasureInfoPanel_SettingClick(object sender, EventArgs e)
- {
- SetInfoPanelVisble(false, true);
- SettingPanel.BindMeasureSetting();
- }
- private void SettingPanel_CancelEvent(object sender, EventArgs e)
- {
- SetInfoPanelVisble(true, false);
- }
- private void SettingPanel_DoneEvent(object sender, EventArgs e)
- {
- SetInfoPanelVisble(true, false);
- }
- public void SetInfoPanelVisble(bool measureInfo, bool measureSetting)
- {
- if(measureInfo)
- {
- InfoPanel.ClearMeasureInfo();
- }
- InfoPanel.Visibility = measureInfo ? Visibility.Visible : Visibility.Collapsed;
- SettingPanel.Visibility = measureSetting ? Visibility.Visible : Visibility.Collapsed;
- }
- public void SetMeasureInfoType(CPDFMeasureType measureType)
- {
- InfoPanel?.SetMeasureType(measureType);
- }
- }
- }
|