134 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using DrawGraph;
 | |
| using System.Drawing;
 | |
| 
 | |
| namespace DrawGraph
 | |
| {
 | |
|     public class SelectedAreaObj : EventObj
 | |
|     {
 | |
|         //以下两个是物理点
 | |
|         private PhysioData startPD = null;
 | |
|         private PhysioData endPd = null;
 | |
|         private List<PhysioData> startPDs = null;
 | |
|         private List<PhysioData> endPds = null;
 | |
|         //以下两个是控件上的点
 | |
|         private PointF startPoint = new PointF();
 | |
|         private PointF endPoint = new PointF();
 | |
| 
 | |
|         private float width = 0;
 | |
|         private float height = 0;
 | |
|          
 | |
|         public double maxnumber = 300;
 | |
|         public double minnumber = 0;
 | |
| 
 | |
|         private string tagName = TextPrefix.BT.ToString();
 | |
|         private bool selected = false;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 选中框是否在选中状态
 | |
|         /// </summary>
 | |
|         public bool Selected
 | |
|         {
 | |
|             get { return selected; }
 | |
|             set { selected = value; }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 设置开始的物理点
 | |
|         /// </summary>
 | |
|         public PhysioData StartPD
 | |
|         {
 | |
|             get { return startPD; }
 | |
|             set
 | |
|             {
 | |
|                 startPD = value;
 | |
|                 startPoint.X = (float)(getXPositinByXDate(startPD.RecordTime));
 | |
|                 startPoint.Y = (float)(getYPositinByValue(startPD.Y,   maxnumber, minnumber));
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 设置结束的物理点
 | |
|         /// </summary>
 | |
|         public PhysioData EndPd
 | |
|         {
 | |
|             get { return endPd; }
 | |
|             set
 | |
|             {
 | |
|                 endPd = value;
 | |
|                 endPoint.X = (float)(getXPositinByXDate(endPd.RecordTime));
 | |
|                 endPoint.Y = (float)(getYPositinByValue(endPd.Y,  maxnumber, minnumber));
 | |
|                 width = endPoint.X - startPoint.X;
 | |
|                 height = endPoint.Y - startPoint.Y;
 | |
|             }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 设置开始的物理点
 | |
|         /// </summary>
 | |
|         public List<PhysioData> StartPDs
 | |
|         {
 | |
|             get { return startPDs; }
 | |
|             set { startPDs = value; }
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 设置结束的物理点
 | |
|         /// </summary>
 | |
|         public List<PhysioData> EndPds
 | |
|         {
 | |
|             get { return endPds; }
 | |
|             set { endPds = value; }
 | |
|         }
 | |
| 
 | |
|         private static volatile SelectedAreaObj instance;
 | |
| 
 | |
|         private SelectedAreaObj()
 | |
|         {
 | |
|             tagName += this.GetType().FullName.ToString();
 | |
|         }
 | |
| 
 | |
|         public static SelectedAreaObj GetInstance()
 | |
|         {
 | |
|             if (null == instance)
 | |
|             {
 | |
|                 instance = new SelectedAreaObj();
 | |
|             }
 | |
|             return instance;
 | |
|         }
 | |
| 
 | |
|         public void Draw()
 | |
|         {
 | |
|             if (zgcAnas == null)
 | |
|             {
 | |
|                 //MessageBox.Show("未传递窗体或传递的不是麻醉单窗体");
 | |
|                 return;
 | |
|             }
 | |
|             //画之前行清空对象
 | |
|             Clear();
 | |
|             if (startPD != null && endPd != null)
 | |
|             {
 | |
|                 //只能正着画;
 | |
|                 if (endPoint.X <= startPoint.X || endPoint.Y <= startPoint.Y) return;
 | |
| 
 | |
|                 BoxObj box = new BoxObj(startPoint.X, startPoint.Y, width, height);
 | |
|                 box.Tag = tagName;
 | |
|                 box.Location.CoordinateFrame = CoordType.PaneFraction;
 | |
|                 box.Border.IsVisible = true;
 | |
|                 box.Border.Color = Color.Black;
 | |
|                 box.Border.Width = 1;
 | |
|                 box.Fill.IsVisible = false;
 | |
|                 box.ZOrder = ZOrder.A_InFront;
 | |
|                 ZUtil.DrawBox(box, zgcAnas);
 | |
|                 selected = true;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public void Clear()
 | |
|         {
 | |
|             selected = false;
 | |
|             delLineObj(tagName);
 | |
|         }
 | |
|     }
 | |
| }
 |