AIMS/DrawGraph/AreaManage/SelectedAreaObj.cs
2022-11-04 22:42:44 +08:00

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);
}
}
}