MeasureControl.xaml.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. using ComPDFKit.Measure;
  2. using ComPDFKit.PDFAnnotation;
  3. using ComPDFKit.Tool;
  4. using Compdfkit_Tools.Helper;
  5. using Compdfkit_Tools.PDFControl;
  6. using ComPDFKitViewer;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Globalization;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows;
  15. using System.Windows.Controls;
  16. using System.Windows.Data;
  17. using System.Windows.Documents;
  18. using System.Windows.Input;
  19. using System.Windows.Media;
  20. using System.Windows.Media.Imaging;
  21. using System.Windows.Navigation;
  22. using System.Windows.Shapes;
  23. namespace Compdfkit_Tools.Measure
  24. {
  25. /// <summary>
  26. /// MeasureControl.xaml 的交互逻辑
  27. /// </summary>
  28. public partial class MeasureControl : UserControl
  29. {
  30. public MeasurePropertyControl measurePropertyControl = new MeasurePropertyControl();
  31. private CPDFDisplaySettingsControl displaySettingsControl;
  32. private PDFViewControl PdfViewControl = new PDFViewControl();
  33. private PanelState panelState = PanelState.GetInstance();
  34. public event EventHandler ExpandEvent;
  35. public MeasureControl()
  36. {
  37. InitializeComponent();
  38. //MeasureSetting.MeasureChanged += MeasureSetting_MeasureChanged;
  39. }
  40. //private void MeasureSetting_MeasureChanged(object sender, MeasureEventArgs e)
  41. //{
  42. // InfoPanel.SetMeasureType(e.Type);
  43. // InfoPanel.SetMeasureInfo(e);
  44. // switch (e.Type)
  45. // {
  46. // case CPDFMeasureType.CPDF_DISTANCE_MEASURE:
  47. // case CPDFMeasureType.CPDF_PERIMETER_MEASURE:
  48. // SettingPanel.ShowAreaAndLength(Visibility.Collapsed);
  49. // break;
  50. // case CPDFMeasureType.CPDF_AREA_MEASURE:
  51. // SettingPanel.ShowAreaAndLength(Visibility.Visible);
  52. // break;
  53. // default:
  54. // break;
  55. // }
  56. // SettingPanel.BindMeasureSetting(e);
  57. //}
  58. #region Init PDFViewer
  59. public void InitWithPDFViewer(PDFViewControl pdfViewControl)
  60. {
  61. PdfViewControl = pdfViewControl;
  62. //PdfViewControl.PDFView = pdfViewer;
  63. PDFMeasureTool.InitWithPDFViewer(pdfViewControl, measurePropertyControl, this);
  64. FloatPageTool.InitWithPDFViewer(pdfViewControl);
  65. PDFGrid.Child = PdfViewControl;
  66. panelState.PropertyChanged -= PanelState_PropertyChanged;
  67. panelState.PropertyChanged += PanelState_PropertyChanged;
  68. PdfViewControl.MouseLeftButtonDownHandler -= PDFToolManager_MouseLeftButtonDownHandler;
  69. PdfViewControl.MouseLeftButtonUpHandler -= PDFToolManager_MouseLeftButtonUpHandler;
  70. PdfViewControl.MouseMoveHandler -= PDFToolManager_MouseMoveHandler;
  71. PdfViewControl.MouseLeftButtonDownHandler += PDFToolManager_MouseLeftButtonDownHandler;
  72. PdfViewControl.MouseLeftButtonUpHandler += PDFToolManager_MouseLeftButtonUpHandler;
  73. PdfViewControl.MouseMoveHandler += PDFToolManager_MouseMoveHandler;
  74. //pdfViewControl.PDFView.AnnotActiveHandler -= PDFView_AnnotActiveHandler;
  75. //pdfViewControl.PDFView.AnnotActiveHandler += PDFView_AnnotActiveHandler;
  76. //pdfViewControl.PDFView.AnnotCommandHandler -= PDFView_AnnotCommandHandler;
  77. //pdfViewControl.PDFView.AnnotCommandHandler += PDFView_AnnotCommandHandler;
  78. SetInfoPanelVisble(false, false);
  79. SettingPanel.PdfViewControl= pdfViewControl;
  80. }
  81. private void PDFToolManager_MouseMoveHandler(object sender, MouseEventObject e)
  82. {
  83. }
  84. private void PDFToolManager_MouseLeftButtonUpHandler(object sender, MouseEventObject e)
  85. {
  86. }
  87. private void PDFToolManager_MouseLeftButtonDownHandler(object sender, MouseEventObject e)
  88. {
  89. if (e.annotType == C_ANNOTATION_TYPE.C_ANNOTATION_LINE)
  90. {
  91. }
  92. }
  93. //private void PDFView_AnnotCommandHandler(object sender, AnnotCommandArgs e)
  94. //{
  95. // switch (e.CommandType)
  96. // {
  97. // case CommandType.Context:
  98. // if (e.CommandTarget == TargetType.Annot && e.PressOnAnnot)
  99. // {
  100. // e.Handle = true;
  101. // e.PopupMenu = new ContextMenu();
  102. // e.PopupMenu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Delete"), Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
  103. // MenuItem menuItem = new MenuItem();
  104. // menuItem.Header = "Measurement Settings";
  105. // menuItem.Click += (item, param) =>
  106. // {
  107. // SettingPanel.UpdateArgsList = e.AnnotEventArgsList;
  108. // SettingPanel.BindMeasureSetting();
  109. // SetInfoPanelVisble(false, true);
  110. // };
  111. // MenuItem propertyItem = new MenuItem();
  112. // propertyItem.Header = "Properties";
  113. // propertyItem.Click += (item, param) =>
  114. // {
  115. // ExpandEvent?.Invoke(this, new EventArgs());
  116. // };
  117. // e.PopupMenu.Items.Add(menuItem);
  118. // e.PopupMenu.Items.Add(propertyItem);
  119. // }
  120. // break;
  121. // case CommandType.Delete:
  122. // e.DoCommand();
  123. // break;
  124. // default:
  125. // break;
  126. // }
  127. //}
  128. //private void PDFView_AnnotActiveHandler(object sender, AnnotAttribEvent e)
  129. //{
  130. // if (e == null || e.IsAnnotCreateReset)
  131. // {
  132. // if (e == null)
  133. // {
  134. // measurePropertyControl?.ClearMeasurePanel();
  135. // if(PDFMeasureTool.ToolChecked()==false)
  136. // {
  137. // SetInfoPanelVisble(false, false);
  138. // }
  139. // }
  140. // return;
  141. // }
  142. // else
  143. // {
  144. // switch (e.GetAnnotTypes())
  145. // {
  146. // case AnnotArgsType.LineMeasure:
  147. // LineMeasureArgs LineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.LineMeasure).First() as LineMeasureArgs;
  148. // panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  149. // measurePropertyControl.SetPropertyForMeasureCreate(LineArgs, e);
  150. // SetInfoPanelVisble(true, false);
  151. // SetMeasureInfoPanel(LineArgs.GetPDFAnnot(), LineArgs);
  152. // break;
  153. // case AnnotArgsType.PolygonMeasure:
  154. // PolygonMeasureArgs polygonArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolygonMeasure).First() as PolygonMeasureArgs;
  155. // panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  156. // measurePropertyControl.SetPropertyForMeasureCreate(polygonArgs, e);
  157. // SetInfoPanelVisble(true, false);
  158. // SetMeasureInfoPanel(polygonArgs.GetPDFAnnot(),polygonArgs);
  159. // break;
  160. // case AnnotArgsType.PolyLineMeasure:
  161. // PolyLineMeasureArgs polyLineArgs = e.GetAnnotHandlerEventArgs(AnnotArgsType.PolyLineMeasure).First() as PolyLineMeasureArgs;
  162. // panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  163. // measurePropertyControl.SetPropertyForMeasureCreate(polyLineArgs, e);
  164. // SetInfoPanelVisble(true, false);
  165. // SetMeasureInfoPanel(polyLineArgs.GetPDFAnnot(),polyLineArgs);
  166. // break;
  167. // }
  168. // }
  169. //}
  170. //private void SetMeasureInfoPanel(CPDFAnnotation rawAnnot,AnnotHandlerEventArgs annotArgs=null)
  171. //{
  172. // if (rawAnnot == null)
  173. // {
  174. // return;
  175. // }
  176. // try
  177. // {
  178. // if (rawAnnot.Type == C_ANNOTATION_TYPE.C_ANNOTATION_LINE)
  179. // {
  180. // CPDFLineAnnotation lineAnnot = rawAnnot as CPDFLineAnnotation;
  181. // if (lineAnnot.IsMersured() && lineAnnot.Points != null && lineAnnot.Points.Count() == 2)
  182. // {
  183. // CPDFDistanceMeasure lineMeasure = lineAnnot.GetDistanceMeasure();
  184. // CPDFMeasureInfo measureInfo = lineMeasure.MeasureInfo;
  185. // Vector standVector = new Vector(1, 0);
  186. // Point startPoint = new Point(lineAnnot.Points[0].x, lineAnnot.Points[0].y);
  187. // Point endPoint = new Point(lineAnnot.Points[1].x, lineAnnot.Points[1].y);
  188. // Vector movevector = endPoint - startPoint;
  189. // double showLenght=lineMeasure.GetMeasurementResults(CPDFCaptionType.CPDF_CAPTION_LENGTH);
  190. // MeasureEventArgs measureEvent = new MeasureEventArgs();
  191. // measureEvent.Angle = (int)Math.Abs(Vector.AngleBetween(movevector, standVector));
  192. // measureEvent.RulerTranslateUnit = measureInfo.RulerTranslateUnit;
  193. // measureEvent.RulerTranslate = measureInfo.RulerTranslate;
  194. // measureEvent.RulerBase = measureInfo.RulerBase;
  195. // measureEvent.RulerBaseUnit = measureInfo.RulerBaseUnit;
  196. // measureEvent.MousePos = new Point(
  197. // (int)Math.Abs(movevector.X),
  198. // (int)Math.Abs(movevector.Y));
  199. // measureEvent.Type = CPDFMeasureType.CPDF_DISTANCE_MEASURE;
  200. // NumberFormatInfo formatInfo = new NumberFormatInfo();
  201. // formatInfo.NumberDecimalDigits = Math.Abs(measureInfo.Precision).ToString().Length - 1;
  202. // measureEvent.Distance = showLenght.ToString("N", formatInfo) + " " + measureInfo.RulerTranslateUnit;
  203. // measureEvent.Precision = GetMeasureShowPrecision(measureInfo.Precision);
  204. // MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
  205. // if(annotArgs!=null)
  206. // {
  207. // SettingPanel.UpdateArgsList =new List<AnnotHandlerEventArgs> { annotArgs};
  208. // }
  209. // }
  210. // }
  211. // if (rawAnnot.Type == C_ANNOTATION_TYPE.C_ANNOTATION_POLYLINE)
  212. // {
  213. // CPDFPolylineAnnotation polylineAnnot = rawAnnot as CPDFPolylineAnnotation;
  214. // if (polylineAnnot.IsMersured() && polylineAnnot.Points != null && polylineAnnot.Points.Count() >= 2)
  215. // {
  216. // double totalInch = 0;
  217. // for (int i = 0; i < polylineAnnot.Points.Count - 1; i++)
  218. // {
  219. // Point endLinePoint = new Point(
  220. // polylineAnnot.Points[i + 1].x,
  221. // polylineAnnot.Points[i + 1].y
  222. // );
  223. // Point startLinePoint = new Point(
  224. // polylineAnnot.Points[i].x,
  225. // polylineAnnot.Points[i].y
  226. // );
  227. // Vector subVector = endLinePoint - startLinePoint;
  228. // totalInch += subVector.Length;
  229. // }
  230. // totalInch = totalInch / 72D;
  231. // CPDFPerimeterMeasure lineMeasure = polylineAnnot.GetPerimeterMeasure();
  232. // CPDFMeasureInfo measureInfo = lineMeasure.MeasureInfo;
  233. // double showLenght = lineMeasure.GetMeasurementResults(CPDFCaptionType.CPDF_CAPTION_LENGTH);
  234. // MeasureEventArgs measureEvent = new MeasureEventArgs();
  235. // measureEvent.Angle = 0;
  236. // measureEvent.RulerTranslateUnit = measureInfo.RulerTranslateUnit;
  237. // measureEvent.RulerTranslate = measureInfo.RulerTranslate;
  238. // measureEvent.RulerBase = measureInfo.RulerBase;
  239. // measureEvent.RulerBaseUnit = measureInfo.RulerBaseUnit;
  240. // measureEvent.Precision = GetMeasureShowPrecision(measureInfo.Precision);
  241. // measureEvent.Type = CPDFMeasureType.CPDF_PERIMETER_MEASURE;
  242. // NumberFormatInfo formatInfo = new NumberFormatInfo();
  243. // formatInfo.NumberDecimalDigits = Math.Abs(measureInfo.Precision).ToString().Length - 1;
  244. // measureEvent.Distance = showLenght.ToString("N", formatInfo) +" "+ measureInfo.RulerTranslateUnit;
  245. // MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
  246. // if (annotArgs != null)
  247. // {
  248. // SettingPanel.UpdateArgsList = new List<AnnotHandlerEventArgs> { annotArgs };
  249. // }
  250. // }
  251. // }
  252. // if(rawAnnot.Type== C_ANNOTATION_TYPE.C_ANNOTATION_POLYGON)
  253. // {
  254. // CPDFPolygonAnnotation Annot = rawAnnot as CPDFPolygonAnnotation;
  255. // CPDFAreaMeasure polygonMeasure = Annot.GetAreaMeasure();
  256. // CPDFMeasureInfo measureInfo = polygonMeasure.MeasureInfo;
  257. // CPDFCaptionType CaptionType = measureInfo.CaptionType;
  258. // bool IsArea = false;
  259. // bool IsLength = false;
  260. // if ((CaptionType& CPDFCaptionType.CPDF_CAPTION_AREA)== CPDFCaptionType.CPDF_CAPTION_AREA)
  261. // {
  262. // IsArea = true;
  263. // }
  264. // if ((CaptionType & CPDFCaptionType.CPDF_CAPTION_LENGTH) == CPDFCaptionType.CPDF_CAPTION_LENGTH)
  265. // {
  266. // IsLength = true;
  267. // }
  268. // SettingPanel.ChangedCheckBoxIsChecked(IsArea, IsLength);
  269. // double inch = polygonMeasure.GetMeasurementResults(CPDFCaptionType.CPDF_CAPTION_AREA);
  270. // double currentInch = polygonMeasure.GetMeasurementResults(CPDFCaptionType.CPDF_CAPTION_LENGTH);
  271. // MeasureEventArgs measureEvent = new MeasureEventArgs();
  272. // measureEvent.RulerTranslateUnit = measureInfo.RulerTranslateUnit;
  273. // measureEvent.RulerTranslate = measureInfo.RulerTranslate;
  274. // measureEvent.RulerBase = measureInfo.RulerBase;
  275. // measureEvent.RulerBaseUnit = measureInfo.RulerBaseUnit;
  276. // measureEvent.Precision = GetMeasureShowPrecision(measureInfo.Precision);
  277. // measureEvent.Type = CPDFMeasureType.CPDF_AREA_MEASURE;
  278. // NumberFormatInfo formatInfo = new NumberFormatInfo();
  279. // formatInfo.NumberDecimalDigits = Math.Abs(measureInfo.Precision).ToString().Length - 1;
  280. // measureEvent.Distance = currentInch.ToString("N", formatInfo) + " " + measureInfo.RulerTranslateUnit;
  281. // measureEvent.Area = inch.ToString("N", formatInfo) + " sq " + measureInfo.RulerTranslateUnit;
  282. // MeasureSetting.InvokeMeasureChangeEvent(this, measureEvent);
  283. // if (annotArgs != null)
  284. // {
  285. // SettingPanel.UpdateArgsList = new List<AnnotHandlerEventArgs> { annotArgs };
  286. // }
  287. // }
  288. // }
  289. // catch (Exception e)
  290. // {
  291. // }
  292. //}
  293. private double GetMeasureRatio(string baseUnit)
  294. {
  295. if (baseUnit == CPDFMeasure.CPDF_PT)
  296. {
  297. return 1 / 72;
  298. }
  299. if (baseUnit == CPDFMeasure.CPDF_IN)
  300. {
  301. return 1;
  302. }
  303. if (baseUnit == CPDFMeasure.CPDF_MM)
  304. {
  305. return 1 / 25.4;
  306. }
  307. if (baseUnit == CPDFMeasure.CPDF_CM)
  308. {
  309. return 1 / 2.54;
  310. }
  311. if (baseUnit == CPDFMeasure.CPDF_M)
  312. {
  313. return 1 / 0.0254;
  314. }
  315. if (baseUnit == CPDFMeasure.CPDFO_KM)
  316. {
  317. return 1 / 0.0254 / 1000;
  318. }
  319. if (baseUnit == CPDFMeasure.CPDF_FT)
  320. {
  321. return 12;
  322. }
  323. if (baseUnit == CPDFMeasure.CPDF_YD)
  324. {
  325. return 36;
  326. }
  327. if (baseUnit == CPDFMeasure.CPDF_MI)
  328. {
  329. return 63360;
  330. }
  331. return 0;
  332. }
  333. private double GetMeasureShowPrecision(int precision)
  334. {
  335. if (precision == CPDFMeasure.PRECISION_VALUE_ZERO)
  336. {
  337. return 1;
  338. }
  339. if (CPDFMeasure.PRECISION_VALUE_ONE == precision)
  340. {
  341. return 0.1;
  342. }
  343. if (CPDFMeasure.PRECISION_VALUE_TWO == precision)
  344. {
  345. return 0.01;
  346. }
  347. if (CPDFMeasure.PRECISION_VALUE_THREE == precision)
  348. {
  349. return 0.001;
  350. }
  351. if (CPDFMeasure.PRECISION_VALUE_FOUR == precision)
  352. {
  353. return 0.0001;
  354. }
  355. return 0;
  356. }
  357. public void SetSettingsControl(CPDFDisplaySettingsControl cPDFDisplaySettingsControl)
  358. {
  359. displaySettingsControl = cPDFDisplaySettingsControl;
  360. }
  361. public void ClearAllToolState()
  362. {
  363. PDFMeasureTool.ClearAllToolState();
  364. }
  365. public void ClearViewerControl()
  366. {
  367. PDFGrid.Child = null;
  368. BotaContainer.Child = null;
  369. PropertyContainer.Child = null;
  370. displaySettingsControl = null;
  371. }
  372. private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
  373. {
  374. if (e.PropertyName == nameof(PanelState.IsLeftPanelExpand))
  375. {
  376. ExpandLeftPanel(panelState.IsLeftPanelExpand);
  377. }
  378. else if (e.PropertyName == nameof(PanelState.RightPanel))
  379. {
  380. if (panelState.RightPanel == PanelState.RightPanelState.PropertyPanel)
  381. {
  382. ExpandRightPropertyPanel(measurePropertyControl, Visibility.Visible);
  383. }
  384. else if (panelState.RightPanel == PanelState.RightPanelState.ViewSettings)
  385. {
  386. ExpandRightPropertyPanel(displaySettingsControl, Visibility.Visible);
  387. }
  388. else
  389. {
  390. ExpandRightPropertyPanel(null, Visibility.Collapsed);
  391. }
  392. }
  393. }
  394. #endregion
  395. #region Expand and collapse Panel
  396. public void ExpandRightPropertyPanel(Visibility visible)
  397. {
  398. ExpandRightPropertyPanel(measurePropertyControl, visible);
  399. }
  400. public void ExpandNullRightPropertyPanel(Visibility visible)
  401. {
  402. ExpandRightPropertyPanel(null, visible);
  403. }
  404. public void ExpandViewSettings(Visibility visible)
  405. {
  406. SetViewSettings(displaySettingsControl, visible);
  407. }
  408. private void ExpandRightPropertyPanel(UIElement propertytPanel, Visibility visible)
  409. {
  410. PropertyContainer.Width = 260;
  411. PropertyContainer.Child = propertytPanel;
  412. PropertyContainer.Visibility = visible;
  413. }
  414. private void SetViewSettings(CPDFDisplaySettingsControl displaySettingsControl, Visibility visibility)
  415. {
  416. PropertyContainer.Child = displaySettingsControl;
  417. PropertyContainer.Visibility = visibility;
  418. }
  419. public void ExpandLeftPanel(bool isExpand)
  420. {
  421. BotaContainer.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
  422. Splitter.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
  423. if (isExpand)
  424. {
  425. BodyGrid.ColumnDefinitions[0].Width = new GridLength(320);
  426. BodyGrid.ColumnDefinitions[1].Width = new GridLength(15);
  427. }
  428. else
  429. {
  430. BodyGrid.ColumnDefinitions[0].Width = new GridLength(0);
  431. BodyGrid.ColumnDefinitions[1].Width = new GridLength(0);
  432. }
  433. }
  434. #endregion
  435. private void UserControl_Loaded(object sender, RoutedEventArgs e)
  436. {
  437. }
  438. private void MeasureInfoPanel_SettingClick(object sender, EventArgs e)
  439. {
  440. if (sender is MeasureInfoPanel)
  441. {
  442. switch ((sender as MeasureInfoPanel).MeasureType)
  443. {
  444. case CPDFMeasureType.CPDF_DISTANCE_MEASURE:
  445. case CPDFMeasureType.CPDF_PERIMETER_MEASURE:
  446. SettingPanel.ShowAreaAndLength(Visibility.Collapsed);
  447. break;
  448. case CPDFMeasureType.CPDF_AREA_MEASURE:
  449. SettingPanel.ShowAreaAndLength(Visibility.Visible);
  450. break;
  451. default:
  452. break;
  453. }
  454. }
  455. SettingPanel.ReturnToInfoPanel = true;
  456. SetInfoPanelVisble(false, true);
  457. SettingPanel.BindMeasureSetting();
  458. }
  459. private void SettingPanel_CancelEvent(object sender, EventArgs e)
  460. {
  461. SetInfoPanelVisble(SettingPanel.ReturnToInfoPanel, false);
  462. }
  463. private void SettingPanel_DoneEvent(object sender, EventArgs e)
  464. {
  465. SetInfoPanelVisble(SettingPanel.ReturnToInfoPanel, false);
  466. }
  467. public void SetInfoPanelVisble(bool measureInfo, bool measureSetting)
  468. {
  469. if (measureInfo)
  470. {
  471. InfoPanel.ClearMeasureInfo();
  472. }
  473. InfoPanel.Visibility = measureInfo ? Visibility.Visible : Visibility.Collapsed;
  474. SettingPanel.Visibility = measureSetting ? Visibility.Visible : Visibility.Collapsed;
  475. }
  476. public void SetMeasureInfoType(CPDFMeasureType measureType)
  477. {
  478. InfoPanel?.SetMeasureType(measureType);
  479. }
  480. public void SetMeasureScale(CPDFMeasureType measureType, string scale)
  481. {
  482. InfoPanel?.SetMeasureScale(measureType,scale);
  483. }
  484. }
  485. }