DrawingQuadrantLines.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using Microsoft.VisualBasic.CompilerServices;
  2. using MuchInfo.Chart.Data.EnumTypes;
  3. using MuchInfo.Chart.Infrastructure.Helpers;
  4. using MuchInfo.Chart.WPF.Controls.Drawing;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Windows;
  8. using System.Windows.Media;
  9. using MuchInfo.Chart.WPF.Primitives.Interfaces;
  10. using MuchInfo.Chart.WPF.Helpers;
  11. namespace MuchInfo.Chart.WPF.Primitives.Drawing
  12. {
  13. public class DrawingQuadrantLines : Drawing2PointLinkedBase
  14. {
  15. private ExtendableLine drawingQuadrantLines_1059;
  16. private float drawingQuadrantLines_1060;
  17. private float drawingQuadrantLines_1061;
  18. public DrawingQuadrantLines()
  19. {
  20. this.drawingQuadrantLines_1060 = 0f;
  21. this.drawingQuadrantLines_1061 = 0f;
  22. }
  23. public override DrawingToolType ToolType()
  24. {
  25. return DrawingToolType.QuadLines;
  26. }
  27. public override bool CanPlotOnAllSymbols()
  28. {
  29. return true;
  30. }
  31. public override IDrawingTool Clone()
  32. {
  33. return new DrawingQuadrantLines
  34. {
  35. mColor = Colors.Cyan
  36. };
  37. }
  38. protected override List<FrameworkElement> GetDrawingPlots(Chart owner, ScaleLayer aScale, Rect aRect)
  39. {
  40. List<FrameworkElement> list = new List<FrameworkElement>();
  41. bool flag = this.drawingQuadrantLines_1059 == null;
  42. if (flag)
  43. {
  44. this.drawingQuadrantLines_1059 = new ExtendableLine(this, owner);
  45. this.drawingQuadrantLines_1059.Stroke = new SolidColorBrush(this.mColor);
  46. this.drawingQuadrantLines_1059.StrokeThickness = 1.4;
  47. DoubleCollection doubleCollection = new DoubleCollection();
  48. doubleCollection.Add(10.0);
  49. doubleCollection.Add(10.0);
  50. this.drawingQuadrantLines_1059.SetMainStrokeDash(doubleCollection);
  51. this.drawingQuadrantLines_1059.ChannelStroke = new SolidColorBrush(this.mColor);
  52. this.drawingQuadrantLines_1059.ExtensionStroke = this.drawingQuadrantLines_1059.Stroke;
  53. }
  54. this.MoveDrawingToNewLocations(aRect);
  55. list.Add(this.drawingQuadrantLines_1059);
  56. return list;
  57. }
  58. public override string RootName
  59. {
  60. get { return "drawQUAD"; }
  61. }
  62. public override string MenuDescription()
  63. {
  64. return LanguageManager.FindResource(LanguageConst.DrawingTool_Abbreviation_QuadrantLines);
  65. }
  66. public override string Abbreviation()
  67. {
  68. return "Quad Line";
  69. }
  70. public override string Description()
  71. {
  72. return this.MenuDescription();
  73. }
  74. protected override void ColorChanged()
  75. {
  76. bool flag = this.drawingQuadrantLines_1059 != null;
  77. if (flag)
  78. {
  79. this.drawingQuadrantLines_1059.Stroke = new SolidColorBrush(this.mColor);
  80. this.drawingQuadrantLines_1059.ChannelStroke = new SolidColorBrush(this.mColor);
  81. this.drawingQuadrantLines_1059.ExtensionStroke = this.drawingQuadrantLines_1059.Stroke;
  82. }
  83. }
  84. public override void CalculateValues()
  85. {
  86. this.CalcHighLowForPoints(this.P1Date, this.P2Date, ref this.drawingQuadrantLines_1060, ref this.drawingQuadrantLines_1061);
  87. this.mDrawP1.Y = ((double)this.mLastScale.GetmScaler().ScaledY(this.drawingQuadrantLines_1061 + (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 2f, this.mLastRect));
  88. this.mDrawP2.Y = ((double)this.mLastScale.GetmScaler().ScaledY(this.drawingQuadrantLines_1061 + (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 2f, this.mLastRect));
  89. }
  90. protected override void MoveDrawingToNewLocations(Rect aRect)
  91. {
  92. Point p = default(Point);
  93. Point p2 = default(Point);
  94. bool flag = this.drawingQuadrantLines_1059 != null;
  95. if (flag)
  96. {
  97. Point pointA = new Point();
  98. Point pointB = new Point();
  99. this.drawingQuadrantLines_1059.SetPosition(this.mDrawP1, this.mDrawP2, this.ExtendLeft, this.ExtendRight, aRect);
  100. //第一条辅助线
  101. p.X = (this.mDrawP1.X);
  102. float num = this.drawingQuadrantLines_1060;
  103. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  104. p.Y = ((double)num);
  105. p2.X = (this.mDrawP2.X);
  106. num = this.drawingQuadrantLines_1060;
  107. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  108. p2.Y = ((double)num);
  109. PointOfLineAtRectangleCalculator(ref pointA, ref pointB, p, p2, aRect);
  110. this.drawingQuadrantLines_1059.SetTopTopPosition(pointA, pointB, this.ExtendLeft, this.ExtendRight, aRect);
  111. //第二条辅助线
  112. p.X = (this.mDrawP1.X);
  113. num = this.drawingQuadrantLines_1061 + 3f * (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 4f;
  114. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  115. p.Y = ((double)num);
  116. p2.X = (this.mDrawP2.X);
  117. num = this.drawingQuadrantLines_1061 + 3f * (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 4f;
  118. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  119. p2.Y = ((double)num);
  120. PointOfLineAtRectangleCalculator(ref pointA, ref pointB, p, p2, aRect);
  121. this.drawingQuadrantLines_1059.SetTopPosition(pointA, pointB, this.ExtendLeft, this.ExtendRight, aRect);
  122. //第三条辅助线
  123. p.X = (this.mDrawP1.X);
  124. num = this.drawingQuadrantLines_1061 + 1f * (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 4f;
  125. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  126. p.Y = ((double)num);
  127. p2.X = (this.mDrawP2.X);
  128. num = this.drawingQuadrantLines_1061 + 1f * (this.drawingQuadrantLines_1060 - this.drawingQuadrantLines_1061) / 4f;
  129. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  130. p2.Y = ((double)num);
  131. PointOfLineAtRectangleCalculator(ref pointA, ref pointB, p, p2, aRect);
  132. this.drawingQuadrantLines_1059.SetBotPosition(pointA, pointB, this.ExtendLeft, this.ExtendRight, aRect);
  133. //第四条辅助线
  134. p.X = (this.mDrawP1.X);
  135. num = this.drawingQuadrantLines_1061;
  136. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  137. p.Y = ((double)num);
  138. p2.X = (this.mDrawP2.X);
  139. num = this.drawingQuadrantLines_1061;
  140. num = this.mLastScale.GetmScaler().ScaledY(num, this.mLastRect);
  141. p2.Y = ((double)num);
  142. PointOfLineAtRectangleCalculator(ref pointA, ref pointB, p, p2, aRect);
  143. this.drawingQuadrantLines_1059.SetBotBotPosition(pointA, pointB, this.ExtendLeft, this.ExtendRight, aRect);
  144. }
  145. }
  146. public override ImageSource Icon()
  147. {
  148. ImageSource result;
  149. try
  150. {
  151. result = ImageHelper.GetImage("QuadLines.png");
  152. }
  153. catch (Exception expr_3A)
  154. {
  155. ProjectData.SetProjectError(expr_3A);
  156. result = null;
  157. ProjectData.ClearProjectError();
  158. }
  159. return result;
  160. }
  161. protected override bool CanExtendLeft()
  162. {
  163. return true;
  164. }
  165. protected override bool CanExtendRight()
  166. {
  167. return true;
  168. }
  169. protected override bool AllowExtensionColorEdit()
  170. {
  171. return false;
  172. }
  173. }
  174. }