DisplaySegment.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. using OTSCommon.Model;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Drawing.Drawing2D;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace OTSIncAReportGraph
  11. {
  12. /// <summary>
  13. /// 基本线类
  14. /// </summary>
  15. public class DisplaySegment : BaseObject, ICloneable
  16. {
  17. private Guid m_id;
  18. private RectangleF m_region;
  19. private PointF m_OTSPointF;
  20. private bool m_isselect;
  21. private bool m_isdragging;
  22. private PointF m_dragingpoint;
  23. private Color m_color;
  24. private Color m_backcolor;
  25. private GraphicsPath m_gpath;
  26. private float m_PenWidthAndHeight = 1;
  27. private SegmentShowMode show_mode = SegmentShowMode.DRAWPOINT;//绘线,绘点,默认绘点,意思为默认显示BSE原图像
  28. private List<Color> m_list_colors;
  29. /// <summary>
  30. /// 克隆基本线
  31. /// </summary>
  32. /// <returns></returns>
  33. public override object Clone()
  34. {
  35. return MemberwiseClone();
  36. }
  37. public DisplaySegment()
  38. {
  39. m_id = System.Guid.NewGuid();
  40. }
  41. /// <summary>
  42. /// ID
  43. /// </summary>
  44. public override Guid guid
  45. {
  46. get { return m_id; }
  47. set { m_id = value; }
  48. }
  49. /// <summary>
  50. /// 画面的大小
  51. /// </summary>
  52. public override RectangleF Rect
  53. {
  54. get { return m_region; }
  55. set { m_region = value; }
  56. }
  57. /// <summary>
  58. /// OTSField
  59. /// </summary>
  60. public override PointF OTSPointF
  61. {
  62. get { return m_OTSPointF; }
  63. set { m_OTSPointF = value; }
  64. }
  65. /// <summary>
  66. /// 画布是否被选择
  67. /// </summary>
  68. public override bool IsSelect
  69. {
  70. get { return m_isselect; }
  71. set { m_isselect = value; }
  72. }
  73. /// <summary>
  74. /// 是否在被拖动
  75. /// </summary>
  76. public override bool IsDragging
  77. {
  78. get { return m_isdragging; }
  79. set { m_isdragging = value; }
  80. }
  81. /// <summary>
  82. /// 被拖动到的位置坐标
  83. /// </summary>
  84. public override PointF DraggingPoint
  85. {
  86. get { return m_dragingpoint; }
  87. set { m_dragingpoint = value; }
  88. }
  89. /// <summary>
  90. /// 线的颜色
  91. /// </summary>
  92. public override Color Color
  93. {
  94. get { return m_color; }
  95. set { m_color = value; }
  96. }
  97. /// <summary>
  98. /// 背景色
  99. /// </summary>
  100. public override Color BackColor
  101. {
  102. get { return m_backcolor; }
  103. set { m_backcolor = value; }
  104. }
  105. /// <summary>
  106. /// 多边形的图形路径边缘
  107. /// </summary>
  108. public override GraphicsPath GPath
  109. {
  110. get { return m_gpath; }
  111. set { m_gpath = value; }
  112. }
  113. /// <summary>
  114. /// 设置画笔的笔宽度
  115. /// </summary>
  116. public float PenWidthAndHeight
  117. {
  118. get { return m_PenWidthAndHeight; }
  119. set { m_PenWidthAndHeight = value; }
  120. }
  121. /// <summary>
  122. /// 设置显示的方式,可以用,绘线显示查看标准库颜色的,也可以用绘点,查看BSE原图颗粒图色的
  123. /// </summary>
  124. public SegmentShowMode ShowMode
  125. {
  126. get { return show_mode; }
  127. set { show_mode = value; }
  128. }
  129. /// <summary>
  130. /// 保存BSE标准库文件的颗粒点的颜色信息
  131. /// </summary>
  132. public List<Color> List_Colors
  133. {
  134. get { return m_list_colors; }
  135. set { m_list_colors = value; }
  136. }
  137. /// <summary>
  138. /// 绘制函数
  139. /// </summary>
  140. /// <param name="e"></param>
  141. public override void OnPaint(PaintEventArgs e)
  142. {
  143. //两种绘制模式的选择,绘线还是缓点
  144. if (show_mode == SegmentShowMode.DRAWLINE)
  145. {
  146. //表示显示的是带有标准库的图像
  147. Pen p = new Pen(m_color, m_PenWidthAndHeight + 1f);//这里加1f的宽度后,用线组成多边形不会分散,效果正常,原因不知,但目前没有遇到问题
  148. e.Graphics.DrawLine(p, Rect.X, Rect.Y, Rect.X + Rect.Width, Rect.Y);
  149. }
  150. //else if (show_mode == SegmentShowMode.DRAWPOINT)
  151. //{
  152. // //根据color的序列,显示绘制的原像素的图像。
  153. // for (int i = 0; i < m_list_colors.Count(); i++)
  154. // {
  155. // e.Graphics.FillRectangle(new SolidBrush(m_list_colors[i]),
  156. // this.Rect.X + (i * m_PenWidthAndHeight) + 1f,
  157. // this.Rect.Y,
  158. // m_PenWidthAndHeight,
  159. // m_PenWidthAndHeight);
  160. // }
  161. //}
  162. }
  163. }
  164. }