140 lines
4.4 KiB
C#
140 lines
4.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using DrawGraph;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DrawGraph
|
|
{
|
|
public class TipBox : EventObj
|
|
{
|
|
private volatile static TipBox _instance = null;
|
|
private static readonly object lockHelper = new object();
|
|
private TipBox() { }
|
|
public static TipBox CreateInstance(string _type)
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
lock (lockHelper)
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
_instance = new TipBox();
|
|
text.IsVisible = true;
|
|
isViewText = false;
|
|
text.Location.X = x;
|
|
text.Location.Y = y;
|
|
text.Text = viewStr;
|
|
text.Tag = "ZgcTip" + type;
|
|
text.FontSpec = new FontSpec("宋体", 5f, System.Drawing.Color.Black, false, false, false);
|
|
timer = new Timer();
|
|
timer.Interval = 500;
|
|
timer.Tick += new EventHandler(timer_Tick);
|
|
type = _type;
|
|
}
|
|
}
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
private static Timer timer;
|
|
static TextObj text = new TextObj();
|
|
static bool isViewText = false;
|
|
static string viewStr = "";
|
|
static string type = "sync";
|
|
static bool isMove = false;
|
|
/// <summary>
|
|
/// 要显示的内容
|
|
/// </summary>
|
|
public string ViewStr
|
|
{
|
|
get { return viewStr; }
|
|
set { viewStr = value; }
|
|
}
|
|
static double x = 0, y = 0;
|
|
static double oldX = 0, oldY = 0;
|
|
|
|
|
|
public void Show(double _x, double _y, bool _isMove = false)
|
|
{
|
|
if (zgcAnas == null)
|
|
{
|
|
//MessageBox.Show("未传递窗体或传递的不是麻醉单窗体");
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
isMove = _isMove;
|
|
text.IsVisible = isViewText;
|
|
x = _x;
|
|
y = _y;
|
|
text.Location.X = x;
|
|
text.Location.Y = y;
|
|
if (zgcAnas.MasterPane == null) return;
|
|
TextObj text1 = (TextObj)zgcAnas.MasterPane.GraphObjList["ZgcTip" + type];
|
|
if (text1 == null)
|
|
{
|
|
ZUtil.DrawText(TipBox.viewStr, TipBox.x, TipBox.y, zgcAnas, 5f, "ZgcTip" + type, true, ZOrder.A_InFront);
|
|
isViewText = true;
|
|
}
|
|
else
|
|
{
|
|
isViewText = true;
|
|
text = text1;
|
|
text.Location.X = x;
|
|
text.Location.Y = y;
|
|
text.IsVisible = isViewText;
|
|
text.Text = viewStr;
|
|
}
|
|
|
|
if (isViewText && type != "sync")
|
|
{
|
|
if (!timer.Enabled)
|
|
{
|
|
timer.Start();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
|
|
}
|
|
public static void Hidden(bool isShow = false)
|
|
{
|
|
//因为移动中所以不隐藏
|
|
if (isMove && isShow == false) return;
|
|
text.IsVisible = false;
|
|
if (type != "sync")
|
|
{
|
|
timer.Stop();
|
|
}
|
|
if (TipBox._instance.zgcAnas != null)
|
|
{
|
|
TipBox._instance.zgcAnas.AxisChange();
|
|
TipBox._instance.zgcAnas.Refresh();
|
|
}
|
|
if (isShow == true)
|
|
{
|
|
TextObj text1 = (TextObj)TipBox._instance.zgcAnas.MasterPane.GraphObjList["ZgcTip" + type];
|
|
if (text != null) TipBox._instance.zgcAnas.MasterPane.GraphObjList.Remove(text1);
|
|
TipBox._instance.zgcAnas.Refresh();
|
|
}
|
|
}
|
|
|
|
protected static void timer_Tick(object sender, EventArgs e)
|
|
{
|
|
if ((x == TipBox.oldX) && (y == TipBox.oldY) && isViewText)
|
|
{
|
|
TipBox.Hidden();
|
|
}
|
|
if (x != TipBox.oldX || y != TipBox.oldY)
|
|
{
|
|
TipBox.oldX = TipBox.x;
|
|
TipBox.oldY = TipBox.y;
|
|
}
|
|
}
|
|
}
|
|
}
|