using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace GeoSigmaViewer { public class DrawTool { private Cursor cursor; protected Drawer drawer; /// /// Tool cursor. /// public Cursor ToolCursor { get { return cursor; } set { cursor=value; } } public Drawer SigmaDrawer { get { return drawer; } set { drawer = value; } } public DrawItemType ItemType { get; set; } private bool _EnableEnd = true; public bool EnableEnd { get { return _EnableEnd; } set { _EnableEnd=value; } } public virtual void Start() { } public virtual void End() { } public virtual void Execute(string cmdString) { } /// /// Left nous button is pressed /// /// /// public virtual void OnLButtonDown(Drawer drawArea, MouseEventArgs e) { } public virtual void OnMouseClick(Drawer drawArea, MouseEventArgs e) { } /// /// Mouse is moved, left mouse button is pressed or none button is pressed /// /// /// public virtual void OnMouseMove(Drawer drawArea, MouseEventArgs e) { } /// /// Left mouse button is released /// /// /// public virtual void OnLButtonUp(Drawer drawArea, MouseEventArgs e) { } public virtual void Cancel(Drawer drawArea) { } public virtual void OK(Drawer drawArea) { } public virtual void EndObject(Drawer drawArea, MouseEventArgs e) { } //protected Point GetEventPointInArea(WellViewer drawArea, MouseEventArgs e) //{ // Point p = new Point(Math.Abs(drawArea.AutoScrollPosition.X) + e.X, Math.Abs(drawArea.AutoScrollPosition.Y) + e.Y); // string status = "X: " + p.X + ", Y: " + p.Y; // //((MainForm)drawArea.Parent).SetStatusStrip(status); // return p; //} } public enum DrawToolType { Default, Select, Pointer, ViewPan, ViewWindow, Connection, Convexity, Model, Fault, FaultReverse, Rectangle, Ellipse, Curve, //Line, Arc, Chord, Pie, Polygon, Proportion, //比例尺 Point, Text, Equilateral, //等边多边形 RectangularCSGrid, //直角坐标网 BreakDirect, //直接打断 Break, //打断 Delete, //删除 DeleteIn, //删除区域内元素 DeleteOut, //删除区域外元素 NumberOfDrawTools } public enum DrawItemType { ITEM_DEFAULT = 999, ITEM_VIEW_PAN = 1000, ITEM_VIEW_WINDOW = 1001, ITEM_STATE =1003, //状态 ITEM_ERASER=1004, //橡皮 ITEM_HYPERLINK=1005, //超级联接 ITEM_SELECT=1006, //元素选择 ITEM_RECTANGLE=1007, //画矩形 ITEM_CIRCLE=1008, //画圆 ITEM_GRID=1009, //坐标网 ITEM_MATRIX_MARK=1010, //矩阵符号 ITEM_CURVE=1011, //曲线 ITEM_LINK_CURVE=1012, //连接曲线 ITEM_SOLID=1013, //填充区域 ITEM_PUT_INTO_CURVE=1014, //内插曲线 ITEM_BREAK_CURVE=1015, //打断曲线 ITEM_IMAGE_TRACE=1016, //图像矢量化 ITEM_EXTEND_CURVE=1017, //曲线延伸 ITEM_TRIM_CURVE=1018, //剪切曲线 ITEM_PROPORTION=1019, //比例尺 ITEM_LINK_POINT=1020, //连接点成曲线 ITEM_2POINT_TO_RECT=1021, //连接两点成矩形 ITEM_3POINT_TO_RGN=1022, //连接三点成四边形 ITEM_ARC=1023, //插入弧、弦、饼 ITEM_EQUILATERAL=1024, //等边多边形 ITEM_IMAGE=1025, //图像 ITEM_MXN=1026, //SEGY类数据 ITEM_INSERT_DRAW=1027, //新符号 ITEM_POINT=1028, //点增加 ITEM_FRAME=1029, //边框 ITEM_TEXT=1030, //文字 ITEM_MESH =1031, //MESH文件 ITEM_ELLIPSE=1032, //椭圆 ITEM_NET=1034, //经纬度网 ITEM_REDUNDANT=1035, //曲线冗余 ITEM_SCALE_EMBELLISH=1036, //放缩比例 ITEM_SCALE_OBJECT=1037, //放缩元素 ITEM_SAVE_TO_MARK=1038, //保存为符号 ITEM_DELETE=1039, //删除 ITEM_FIND=1040, //查找\替换 ITEM_MATH_FIND =1041, //数学发现 ITEM_CLIPBOARD =1042, //剪切板COPY与PAST ITEM_CURVE_PROCESS=1043, //曲线处理类 ITEM_POINT_PROCESS=1044, //点处理 ITEM_TEXT_EDIT=1045, //对文本数据的批量设置 ITEM_EXPRESSION=1046, //对x,y,z,l进行表达式计算 ITEM_ARC_EDIT=1047, //对弧、弦、饼进行编辑 ITEM_SELECT_ELEMENT=1048, //选择一个元素类 ITEM_SELECT_GOTO=1049, //选择转移 ITEM_CALIBRATE =1050, //校正 ITEM_SECTION=1051, //Section数据 ITEM_CHANGE_COLOR=1052, //改变颜色 ITEM_OPEN_FILE=1053, //打开文件 ITEM_BK_GRID=1054, //背景网格 ITEM_CURVE_EDIT=1055, //曲线编辑 ITEM_POINT_EDIT=1056, //点编辑 ITEM_WMF=1058, //WMF和EMF文件 ITEM_ALIGN=1059, //元素对齐处理 ITEM_CALIBRATE_LINE=1060, //直线校正 ITEM_ROTATE=1061, //旋转 ITEM_TOOLTIP=1062, //信息提示 ITEM_XPOINT_EDIT=1063, //x点编辑 ITEM_OLE=1064, //OLE元素 ITEM_INSERT_TABLE=1065, //插入表格 ITEM_STAT_ELEMENTS=1066, //统计元素 ITEM_MESH_PROCESS=1067, //曲面计算 ITEM_CUT_OUT=1068, //剪裁外部 ITEM_MATRIX_COPY=1069, //矩阵复制 ITEM_CURVE_INNAME=1070, //编辑曲线内部名字 ITEM_CURVE_NAME_AUTO=1071, //根据步长自动设置等值线名称 ITEM_CURVE_NAME_EXPRESSION=1072, //对曲线名称进行表达式运算 ITEM_MAKE_MARK=1073, //符号制作 ITEM_INSERT_OLD=1074, //老符号 ITEM_OTHER=1075, //其它的一些处理 ITEM_GET_RANGE=1076, //拾取区域 ITEM_MARK=1077, //导入编辑 ITEM_BREAK_CURVE_DIRECT=1078, //打断曲线 ITEM_SCALE=1079, //通过定置两条任意曲线拉伸元素 ITEM_CUT_IN=1080, //剪裁内部 ITEM_CURVE_CENTER_NAME=1081, //编辑曲线内部名字 ITEM_COPY_AS_IMAGE=1082, //编辑曲线内部名字 ITEM_SCALE_RULER=1083, //标尺编辑 ITEM_TRACE_TO_LOG=1084, //矢量化数据转换为测井数据 ITEM_CHANGE_LAYER =1085, //改变类别 ITEM_CROSSPOINT_EDIT=1086, //十字点编辑 ITEM_CROSSPOINT=1087, //十字点插入 ITEM_TWOPOINT_EDIT=1088, //分数点编辑 ITEM_TWOPOINT=1089, //分数点插入 ITEM_IMAGE_PROCESS=1090, //图像处理 ITEM_SOLID_LINK =1091, //连接曲线填充区域 ITEM_CURVE_Z_SETTING=1092, //根据步长自动设置曲线Z值 ITEM_BREAK_CONTOUR =1093, //打断等值线(结合逆断层)为了给断层内的等值线上虚线 ITEM_PATH_FILL=1094, //路径充填 ITEM_WELL =1095, //添加井 ITEM_ADD_WELL=1096, //编辑井 ITEM_CHART=1097, //添加图版 ITEM_CHARTEX =1098, //统计图 ITEM_CHARTEX_EDIT=1099, ITEM_CREATE_CONTOUR=1100 //生成等值线 } }