Example #1
0
File: Form1.cs Project: sjyfok/cpp
        private void NewPage(string pagename, Color back, int width, int height)
        {
            int count = tabMain.TabPages.Count;

            for (int j = count - 1; j >= 1; j--)
            {
                tabMain.TabPages.RemoveAt(j);
            }

            VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
            vs.Name            = pagename;
            vs.Width           = width;
            vs.Height          = height;
            vs.BackGroundColor = back;
            vs.MouseClick     += new MouseEventHandler(vs_MouseClick);

            TabPage page = new TabPage();

            page.Name = pagename;
            page.Text = pagename;
            page.Tag  = pagename;
            page.Controls.Add(vs);

            tabMain.TabPages.Add(page);
            tabMain.SelectTab(pagename);
        }
Example #2
0
        //添加图元动作属性的注册
        public void RegisterEvent()
        {
            //遍历每个画面
            int count = tabMain.TabPages.Count;

            for (int i = 0; i < count; i++)
            {
                VisualGraph.VisualGraph drawarea = (VisualGraph.VisualGraph)tabMain.TabPages[i].Controls[0];
                int n = drawarea.ObjList.Count();
                //遍历每个画面的图元
                for (int j = 0; j < n; j++)
                {
                    DrawObject o = (DrawObject)drawarea.ObjList[j];
                    //查找关联了变量的属性,并注册动画函数到变量事件
                    if (o.xName != "" || o.yName != "" || o.widthName != "" || o.heightName != "" || o.textName != "" || o.visibleName != "")
                    {
                        foreach (ChannelManage ch in ChannelList)
                        {
                            foreach (DeviceManage dev in ch.AllDevList)
                            {
                                foreach (Variable var in dev.AllVarList)
                                {
                                    if (var.Name.Equals(o.xName) || var.Name.Equals(o.yName) || var.Name.Equals(o.widthName) || var.Name.Equals(o.heightName) ||
                                        var.Name.Equals(o.textName) || var.Name.Equals(o.visibleName))
                                    {
                                        var.Datachanged += new Variable.DataEventHandler(o.SetAction);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        protected void GetActivedObjectType(String s)
        {
            if (tabMain.TabPages.Count == 0)
            {
                return;
            }
            TabPage page = tabMain.SelectedTab;

            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)page.Controls[0];
            if (s == null)
            {
                drawArea.ActivedObjType = Global.DrawType.POINTER;
            }
            if (s == "Line")
            {
                drawArea.ActivedObjType = Global.DrawType.DrawLine;
            }
            if (s == "Retangle")
            {
                drawArea.ActivedObjType = Global.DrawType.DrawRectangle;
            }
            if (s == "Ellipse")
            {
                drawArea.ActivedObjType = Global.DrawType.DrawEllipse;
            }
            if (s == "Text")
            {
                drawArea.ActivedObjType = Global.DrawType.DrawText;
            }
            if (s == "Picture")
            {
                drawArea.ActivedObjType = Global.DrawType.DrawPic;
            }
        }
        private void toolStripButton12_Click(object sender, EventArgs e)
        {
            TabPage page = tabMain.SelectedTab;

            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)page.Controls[0];
            drawArea.ObjList.MoveSelectionToBack();
            drawArea.Invalidate();
        }
Example #5
0
 void vs_MouseClick(object sender, MouseEventArgs e)
 {
     VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)sender;
     if (e.Button == MouseButtons.Left)
     {
         //用户选择的是图形对象
         if (drawArea.ObjList.SelectionCount > 0)
         {
             //添加基本属性
             DrawObject obj = drawArea.ObjList.GetSelectedObject(0);
             this.propertyGrid1.SelectedObject = obj;
             //添加动作属性,根据选中的图元获取其图元类型,并按图元类型进行相应动作属性的添加。
             if (obj.ObjectType == Global.DrawType.DrawLine || obj.ObjectType == Global.DrawType.DrawRectangle || obj.ObjectType == Global.DrawType.DrawEllipse || obj.ObjectType == Global.DrawType.DrawPic)
             {
                 propertyGridEx1.ShowCustomProperties = true;
                 propertyGridEx1.Item.Clear();
                 propertyGridEx1.Item.Add("X位置", obj.xName, false, "位置", "水平位置", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("Y位置", obj.yName, false, "位置", "垂直位置", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("宽度", obj.widthName, false, "尺寸", "水平尺寸", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("高度", obj.heightName, false, "尺寸", "垂直尺寸", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("可见", obj.visibleName, false, "视觉", "是否可见", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Refresh();
             }
             else if (obj.ObjectType == Global.DrawType.DrawText)
             {
                 propertyGridEx1.ShowCustomProperties = true;
                 propertyGridEx1.Item.Clear();
                 propertyGridEx1.Item.Add("X位置", obj.xName, false, "位置", "水平位置", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("Y位置", obj.yName, false, "位置", "垂直位置", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("宽度", obj.widthName, false, "尺寸", "水平尺寸", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("高度", obj.heightName, false, "尺寸", "垂直尺寸", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("可见", obj.visibleName, false, "视觉", "是否可见", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 //propertyGridEx1.Item.Add("填充色", sfillName, false, "填充色", "填充色", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("文本", obj.textName, false, "文本", "文本", true);
                 propertyGridEx1.Item[propertyGridEx1.Item.Count - 1].OnClick += this.CustomActionItem_OnClick;
                 propertyGridEx1.Item.Add("文本格式", obj.Format, false, "文本", "文本格式", true);
                 propertyGridEx1.Refresh();
             }
         }
         else//图元库控件画面
         {
             this.propertyGrid1.SelectedObject = drawArea;
         }
     }
 }
        }         //public void StartListen()

        //根据请求的formid,这里为page1~n,即对应画面里的名称,获得该page里相关文本的xml格式数据,用以返回给web显示。
        //本程序中,其他图元的相关代码被注释掉了,需要的话,可以根据需要继续完善其他图元的相关信息。
        //返回给客户的XML数据格式为:,其中id为图元中属性id值,建议采用数字作为id
        //<objectlist>
        //<object id="1">
        //<value>12.3</value>
        //</object>
        //<object id="2">
        //<value>45.6</value>
        //</object>
        //</objectlist>
        public string GetFormWebXml(string formid)
        {
            string xml    = "<?xml version=\" & chr(34) & \"1.0\" & chr(34) & \"?><empty/></xml>";
            int    nCount = tabMain.TabPages.Count;

            for (int k = 0; k < nCount; k++)
            {
                VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)tabMain.TabPages[k].Controls[0];
                string s = tabMain.TabPages[k].Text;
                if (s.Equals(formid))
                {
                    using (StringWriter sw = new StringWriter())
                    {
                        XmlTextWriter writer = new XmlTextWriter(sw);
                        writer.WriteStartElement("objectlist");
                        int n = drawArea.ObjList.Count();
                        for (int i = 0; i < n; i++)
                        {
                            DrawObject o = drawArea.ObjList[i];
                            switch (o.ObjectType)
                            {
                            case Global.DrawType.DrawText:    //文本
                                DrawText m = (DrawText)o;
                                //xml make
                                if (m.textName != "")
                                {
                                    writer.WriteStartElement("object");
                                    writer.WriteAttributeString("id", m.ID.ToString());
                                    writer.WriteStartElement("value");
                                    writer.WriteString(m.CurText);
                                    writer.WriteEndElement();
                                    writer.WriteEndElement();
                                }
                                break;

                                /*
                                 * case 7://图片
                                 *  DrawPic m7 = (DrawPic)o
                                 *  writer.WriteStartElement("object");
                                 *  writer.WriteAttributeString("id", m7.Id);
                                 *  writer.WriteEndElement();
                                 *  break;*/
                            }
                        }
                        writer.WriteEndElement();
                        writer.Close();
                        xml = sw.ToString();
                        sw.Close();
                    }
                }
            }
            return(xml);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            TabPage page = tabMain.SelectedTab;//获取当前画面

            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)page.Controls[0];
            BackColorForm           form     = new BackColorForm();

            form.backColor = drawArea.BackGroundColor;
            if (form.ShowDialog() == DialogResult.OK)
            {
                drawArea.BackGroundColor = form.backColor;
                drawArea.Invalidate();
            }
        }
Example #8
0
File: Form1.cs Project: sjyfok/cpp
 void vs_MouseClick(object sender, MouseEventArgs e)
 {
     VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)sender;
     if (e.Button == MouseButtons.Left)
     {
         if (drawArea.ObjList.SelectionCount > 0)
         {
             DrawObject obj = drawArea.ObjList.GetSelectedObject(0);
             this.propertyGrid1.SelectedObject = obj;
         }
         else
         {
             this.propertyGrid1.SelectedObject = drawArea;
         }
     }
 }
 private void  SavePagesAndDevices()
 {
     //save pages form
     try
     {
         int count = tabMain.TabPages.Count;
         for (int i = 0; i < count; i++)
         {
             VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)tabMain.TabPages[i].Controls[0];
             string s = myProjectPath + tabMain.TabPages[i].Text + ".page";
             using (FileStream fs = new FileStream(s, FileMode.Create))
             {
                 if (fs != null)
                 {
                     BinaryFormatter BinaryWrite = new BinaryFormatter();
                     BinaryWrite.Serialize(fs, drawArea.ObjList);
                     BinaryWrite.Serialize(fs, drawArea.BackGroundColor);
                     fs.Close();
                 }
             }
         }
     }
     catch (System.Exception ex)
     {
         MessageBox.Show("Exception:" + ex.ToString(), " Save Page error.");
     }
     try
     {
         foreach (ChannelManage ch in ChannelList)
         {
             string s = myProjectPath + ch.ChannelName + ".dev";
             using (FileStream fs = new FileStream(s, FileMode.Create))
             {
                 if (fs != null)
                 {
                     BinaryFormatter BinaryWrite = new BinaryFormatter();
                     BinaryWrite.Serialize(fs, ch);
                     fs.Close();
                 }
             }
         }
     }
     catch (Exception err)
     {
         MessageBox.Show("Exception:" + err.ToString(), " Save device error.");
     }
 }
Example #10
0
        private void OpenPage(string pagename)
        {
            string s = myProjectPath + pagename + ".page";

            try
            {
                using (FileStream fs = new FileStream(s, FileMode.Open))
                {
                    if (fs != null)
                    {
                        //open pages form
                        VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
                        vs.Name              = pagename;
                        vs.Width             = 800;
                        vs.Height            = 480;
                        vs.MouseClick       += new MouseEventHandler(vs_MouseClick);
                        vs.MouseDoubleClick += new MouseEventHandler(vs_MouseDoubleClick);
                        TabPage page = new TabPage();
                        page.Name = pagename;
                        page.Text = pagename;
                        page.Tag  = pagename;
                        page.Controls.Add(vs);
                        tabMain.TabPages.Add(page);
                        tabMain.SelectTab(pagename);
                        BinaryFormatter BinaryRead = new BinaryFormatter();
                        vs.ObjList = (ObjList)BinaryRead.Deserialize(fs);
                        //设置每个图元的lock和runmode属性
                        int count = vs.ObjList.Count();
                        for (int i = 0; i < count; i++)
                        {
                            DrawObject o = (DrawObject)vs.ObjList[i];
                            o.RunMode = true;
                            o.Lock    = true;
                        }
                        vs.BackGroundColor = (Color)BinaryRead.Deserialize(fs);;
                        fs.Close();
                        vs.Invalidate();
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Exception:" + ex.ToString(), " Save Page error.");
            }
        }
        //新建一个page
        private void NewPage(string pagename, Color back, int width, int height)
        {
            VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
            vs.Name            = pagename;
            vs.Width           = width;
            vs.Height          = height;
            vs.BackGroundColor = back;
            vs.MouseClick     += new MouseEventHandler(vs_MouseClick);
            //vs.ResizeCanvase();
            TabPage page = new TabPage();

            page.Name = pagename;
            page.Text = pagename;
            page.Tag  = pagename;
            page.Controls.Add(vs);
            tabMain.TabPages.Add(page);
            tabMain.SelectTab(pagename);
        }
Example #12
0
 public void DealEventProperty(bool bClick, object sender, MouseEventArgs e)
 {
     VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)sender;
     if (e.Button == MouseButtons.Left)
     {
         //取得鼠标位置
         Point      point = new Point(e.X, e.Y);
         DrawObject gp    = drawArea.ObjList.GetSelectedObject(point);
         if (gp != null)//选中了
         {
             if (bClick)
             {
                 if (gp.Click != "")//deal the click event
                 {
                     string[] strContent = gp.Click.Split('+');
                     if (strContent[0].Equals("打开画面"))
                     {
                         tabMain.SelectTab(strContent[1]);
                     }
                     else if (strContent[0].Equals("写变量值"))
                     {
                         WritetoDevice(strContent[1], strContent[2]);
                     }
                 }
             }
             else
             {
                 if (gp.DoubleClick != "")//deal the dclick event
                 {
                     string[] strContent = gp.Click.Split('+');
                     if (strContent[0].Equals("打开画面"))
                     {
                         tabMain.SelectTab(strContent[1]);
                     }
                     else if (strContent[0].Equals("写变量值"))
                     {
                         WritetoDevice(strContent[1], strContent[2]);
                     }
                 }
             }
         }
     }
 }
        //动作属性参数值变化事件响应函数
        void propertyGridEx1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            TabPage page = tabMain.SelectedTab;//获取当前画面

            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)page.Controls[0];
            if (drawArea.ObjList.SelectionCount > 0)
            {
                //获得当前对象
                DrawObject obj = drawArea.ObjList.GetSelectedObject(0);
                switch (e.ChangedItem.Label.ToString())//根据改变的动作属性值修改图元对应的动作属性名称
                {
                case "可见":
                    obj.visibleName = e.ChangedItem.Value.ToString();
                    break;

                case "X位置":
                    obj.xName = e.ChangedItem.Value.ToString();
                    break;

                case "Y位置":
                    obj.yName = e.ChangedItem.Value.ToString();
                    break;

                case "宽度":
                    obj.widthName = e.ChangedItem.Value.ToString();
                    break;

                case "高度":
                    obj.heightName = e.ChangedItem.Value.ToString();
                    break;

                case "文本":
                    obj.textName = e.ChangedItem.Value.ToString();
                    break;

                case "文本格式":
                    obj.Format = e.ChangedItem.Value.ToString();
                    break;
                }
            }
        }
        //事件属性参数值变化响应函数
        void propertyGridEx2_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            TabPage page = tabMain.SelectedTab; //获取当前画面

            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)page.Controls[0];
            if (drawArea.ObjList.SelectionCount > 0)
            {
                //获得当前对象
                DrawObject obj = drawArea.ObjList.GetSelectedObject(0);
                switch (e.ChangedItem.Label.ToString())
                {
                case "鼠标单击":
                    obj.Click = e.ChangedItem.Value.ToString();
                    break;

                case "鼠标双击":
                    obj.DoubleClick = e.ChangedItem.Value.ToString();
                    break;
                }
            }
        }
        private void OpenPage(string pagename)
        {
            string s = myProjectPath + pagename + ".page";

            try
            {
                //open pages form
                VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
                vs.Name         = pagename;
                vs.Width        = 800;
                vs.Height       = 480;
                vs.Click       += new EventHandler(vs_Click);
                vs.DoubleClick += new EventHandler(vs_DoubleClick);
                vs.MouseDown   += new MouseEventHandler(vs_MouseDown);
                vs.MouseUp     += new MouseEventHandler(vs_MouseUp);
                //建立监控画面
                FormEdit page = new FormEdit();
                page.Name = pagename;
                page.Text = pagename;
                page.Controls.Add(vs);
                editFormList.Add(page);
                FormState formState = new FormState();
                formState.Maximize(page);
                vs.LoadFromXml(s);
                //设置每个图元的lock和runmode属性
                int count = vs.ObjList.Count();
                for (int i = 0; i < count; i++)
                {
                    DrawObject o = (DrawObject)vs.ObjList[i];
                    o.RunMode = true;
                    o.Lock    = true;
                }
                vs.Invalidate();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Exception:" + ex.ToString(), " Open Page error.");
            }
        }
Example #16
0
        public override void Draw(Graphics g, VisualGraph drawArea)
        {
            SolidBrush drawBrush = new SolidBrush(Color.Black);
            Pen        fontPen   = new Pen(Color, PenWidth);

            if (_stringFormat == null)
            {
                _stringFormat               = new StringFormat();
                _stringFormat.Alignment     = StringAlignment.Center;
                _stringFormat.LineAlignment = StringAlignment.Center;;
            }

            Font drawFont = new Font("Arial", 12);

            g.DrawString(CurText, drawFont, drawBrush, ShapeRect, _stringFormat);
            if (_Show)
            {
                g.DrawRectangle(fontPen, DrawRectangle.GetNormalizedRectangle(ShapeRect));
            }
            drawFont.Dispose();
            drawBrush.Dispose();
            fontPen.Dispose();
        }
        private void OpenPage(string pagename)
        {
            string s = myProjectPath + pagename + ".page";

            try
            {
                //open pages form
                VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
                vs.Name   = pagename;
                vs.Width  = 800;
                vs.Height = 480;
                //建立监控画面
                FormEdit page = new FormEdit();
                page.Name = pagename;
                page.Text = pagename;
                page.Controls.Add(vs);
                editFormList.Add(page);
                vs.LoadFromXml(s);
                //设置每个图元的lock和runmode属性
                int count = vs.ObjList.Count();
                for (int i = 0; i < count; i++)
                {
                    DrawObject o = (DrawObject)vs.ObjList[i];
                    o.RunMode = true;
                    o.Lock    = true;
                }
                vs.Invalidate();
                //select first page
                FormEdit edit = (FormEdit)editFormList[0];
                edit.Show();
                edit.BringToFront();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Exception:" + ex.ToString(), " Open Page error.");
            }
        }
        private void OpenPage(string pagename)
        {
            string s = myProjectPath + pagename + ".page";

            try
            {
                //open pages form
                VisualGraph.VisualGraph vs = new VisualGraph.VisualGraph();
                vs.Name              = pagename;
                vs.Width             = 800;
                vs.Height            = 480;
                vs.MouseClick       += new MouseEventHandler(vs_MouseClick);
                vs.MouseDoubleClick += new MouseEventHandler(vs_MouseDoubleClick);
                TabPage page = new TabPage();
                page.Name = pagename;
                page.Text = pagename;
                page.Tag  = pagename;
                page.Controls.Add(vs);
                tabMain.TabPages.Add(page);
                tabMain.SelectTab(pagename);
                vs.LoadFromXml(s);
                //设置每个图元的lock和runmode属性
                int count = vs.ObjList.Count();
                for (int i = 0; i < count; i++)
                {
                    DrawObject o = (DrawObject)vs.ObjList[i];
                    o.RunMode = true;
                    o.Lock    = true;
                }
                vs.Invalidate();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Exception:" + ex.ToString(), " Save Page error.");
            }
        }
Example #19
0
File: Tool.cs Project: sjyfok/cpp
 public virtual void OnMouseDown(VisualGraph drawArea, MouseEventArgs e)
 {
 }
Example #20
0
        public void Clone(VisualGraph drawArea)
        {
            int   n = tempList.Count;
            Point point;

            for (int i = 0; i < n; i++)
            {
                DrawObject o = (DrawObject)tempList[i];
                point = new Point(o.ShapeRect.X + 10, o.ShapeRect.Y + 10);
                switch (o.ObjectType)
                {
                case Global.DrawType.DrawEllipse:
                    DrawEllipse dp = new DrawEllipse(point, drawArea);
                    dp.Selected  = false;
                    dp.ShapeRect = new Rectangle(point.X, point.Y, o.ShapeRect.Width, o.ShapeRect.Height);
                    dp.PenWidth  = o.PenWidth;
                    dp.Color     = o.Color;
                    objList.Add(dp);
                    break;

                case Global.DrawType.DrawLine:
                    DrawLine dl = new DrawLine(point, drawArea);
                    dl.Selected   = false;
                    dl.StartPoint = point;
                    dl.EndPoint   = new Point(point.X + o.ShapeRect.Width, point.Y + o.ShapeRect.Height);
                    dl.Width      = o.ShapeRect.Width;
                    dl.Height     = o.ShapeRect.Height;
                    dl.PenWidth   = o.PenWidth;
                    dl.Color      = o.Color;
                    objList.Add(dl);
                    break;

                case Global.DrawType.DrawRectangle:
                    DrawRectangle dr = new DrawRectangle(point, drawArea);
                    dr.Selected  = false;
                    dr.ShapeRect = new Rectangle(point.X, point.Y, o.ShapeRect.Width, o.ShapeRect.Height);
                    dr.PenWidth  = o.PenWidth;
                    dr.Color     = o.Color;
                    objList.Add(dr);
                    break;

                case Global.DrawType.DrawText:
                    DrawText dt = new DrawText(point, drawArea);
                    dt.Selected  = false;
                    dt.ShapeRect = new Rectangle(point.X, point.Y, o.ShapeRect.Width, o.ShapeRect.Height);
                    dt.PenWidth  = o.PenWidth;
                    dt.Color     = o.Color;
                    objList.Add(dt);
                    break;

                case Global.DrawType.DrawPic:
                    DrawPic   oldpic = (DrawPic)o;
                    DrawPic   dpic   = new DrawPic(point, drawArea);
                    Rectangle ret    = new Rectangle(point.X, point.Y, oldpic.ShapeRect.Width, oldpic.ShapeRect.Height);
                    dpic.ShapeRect = ret;
                    dpic.TheImage  = oldpic.TheImage;
                    dpic.Selected  = false;
                    objList.Add(dpic);
                    break;
                }
            }
            drawArea.ActivedObjType = Global.DrawType.POINTER;
        }
Example #21
0
 public void UpdatePage()
 {
     VisualGraph.VisualGraph vs = (VisualGraph.VisualGraph)tabMain.SelectedTab.Controls[0];
     vs.Invalidate();
 }
 public void UpdatePage()
 {
     VisualGraph.VisualGraph vs = (VisualGraph.VisualGraph)SelectedPage.Controls[0];
     vs.Invalidate();
 }
Example #23
0
 public virtual void Draw(Graphics g, VisualGraph drawArea)
 {
 }
        public void DealEventProperty(bool bClick, object sender, EventArgs e)
        {
            VisualGraph.VisualGraph drawArea = (VisualGraph.VisualGraph)sender;

            //取得鼠标位置
            Point      point = new Point(MousePosition.X, MousePosition.Y);
            DrawObject gp    = drawArea.ObjList.GetSelectedObject(point);

            if (gp != null)//选中了
            {
                if (bClick)
                {
                    if (gp.Click != "")//deal the click event
                    {
                        string[] strContent = gp.Click.Split('+');
                        if (strContent[0].Equals("打开画面"))
                        {
                            try
                            {
                                int n = editFormList.Count;
                                for (int i = 0; i < n; i++)
                                {
                                    if (((FormEdit)editFormList[i]).Text.Equals(strContent[1]))
                                    {
                                        SelectedPage.SendToBack();
                                        FormState state = new FormState();
                                        state.Maximize((FormEdit)editFormList[i]);
                                        ((FormEdit)editFormList[i]).Show();
                                        ((FormEdit)editFormList[i]).BringToFront();
                                        SelectedPage = editFormList[i];
                                        nCurrentForm = i;
                                        break;
                                    }
                                }
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.Message, "Error");
                            }
                        }
                        else if (strContent[0].Equals("写变量值"))
                        {
                            WritetoDevice(strContent[1], strContent[2]);
                        }
                    }
                }
                else
                {
                    if (gp.DoubleClick != "")//deal the dclick event
                    {
                        string[] strContent = gp.Click.Split('+');
                        if (strContent[0].Equals("打开画面"))
                        {
                            try
                            {
                                int n = editFormList.Count;
                                for (int i = 0; i < n; i++)
                                {
                                    if (((FormEdit)editFormList[i]).Text.Equals(strContent[1]))
                                    {
                                        FormState state = new FormState();
                                        state.Maximize((FormEdit)editFormList[i]);
                                        ((FormEdit)editFormList[i]).Show();
                                        ((FormEdit)editFormList[i]).BringToFront();
                                        SelectedPage = editFormList[i];
                                        break;
                                    }
                                }
                            }
                            catch (System.Exception ex)
                            {
                                MessageBox.Show(ex.Message, "Error");
                            }
                        }
                        else if (strContent[0].Equals("写变量值"))
                        {
                            WritetoDevice(strContent[1], strContent[2]);
                        }
                    }
                }
            }
        }
Example #25
0
        public override void OnMouseDown(VisualGraph drawArea, MouseEventArgs e)
        {
            Point point = new Point(e.X, e.Y);

            selectMode = SelectionMode.None;

            int n = drawArea.ObjList.SelectionCount;

            for (int i = n - 1; i >= 0; i--)
            {
                DrawObject o = drawArea.ObjList.GetSelectedObject(i);

                int handleNumber = o.HitTest(point);
                if (handleNumber > 0)
                {
                    selectMode          = SelectionMode.Size;
                    resizedObject       = o;
                    resizedObjectHandle = handleNumber;
                    drawArea.ObjList.UnselectAll();
                    o.Selected = true;

                    break;
                }
            }

            if (selectMode == SelectionMode.None)
            {
                int        m = drawArea.ObjList.Count();
                DrawObject o = null;
                for (int i = m - 1; i >= 0; i--)
                {
                    if (drawArea.ObjList[i].HitTest(point) == 0)
                    {
                        o = drawArea.ObjList[i];
                        break;
                    }
                }

                if (o != null)
                {
                    selectMode = SelectionMode.Move;
                    if ((Control.ModifierKeys & Keys.Control) == 0 && !o.Selected)
                    {
                        drawArea.ObjList.UnselectAll();
                    }
                    o.Selected = true;
                    //»­Ñ¡Ôñ±ß¿ò
                    drawArea.Cursor = Cursors.SizeAll;
                }
            }
            if (selectMode == SelectionMode.None)
            {
                if ((Control.ModifierKeys & Keys.Control) == 0)
                {
                    drawArea.ObjList.UnselectAll();
                }
                selectMode = SelectionMode.NetSelection;
                drawArea.DrawNetRectangle = true;
            }
            lastPoint.X  = point.X;
            lastPoint.Y  = point.Y;
            startPoint.X = point.X;
            startPoint.Y = point.Y;

            drawArea.Capture      = true;
            drawArea.NetRectangle = GetNormalizedRectangle(startPoint, lastPoint);

            drawArea.Refresh();
        }
Example #26
0
        public override void OnMouseMove(VisualGraph drawArea, MouseEventArgs e)
        {
            Point point = new Point(e.X, e.Y);

            if (e.Button == MouseButtons.None)
            {
                Cursor cursor = null;
                for (int i = drawArea.ObjList.Count() - 1; i >= 0; i--)
                {
                    int n = drawArea.ObjList[i].HitTest(point);
                    if (n > 0)
                    {
                        cursor = drawArea.ObjList[i].GetHandleCursor(n);
                        break;
                    }
                }
                if (cursor == null)
                {
                    cursor = Cursors.Default;
                }
                drawArea.Cursor = cursor;
                return;
            }

            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            int dx = point.X - lastPoint.X;
            int dy = point.Y - lastPoint.Y;

            lastPoint.X = point.X;
            lastPoint.Y = point.Y;
            if (selectMode == SelectionMode.Size)
            {
                if (resizedObject != null)
                {
                    resizedObject.MoveHandleTo(point, resizedObjectHandle);
                    drawArea.Refresh();
                }
            }


            if (selectMode == SelectionMode.Move)
            {
                int n = drawArea.ObjList.SelectionCount;

                for (int i = n - 1; i >= 0; i--)
                {
                    drawArea.ObjList.GetSelectedObject(i).Move(dx, dy);
                }
                DrawObject l = (DrawObject)drawArea.ObjList.GetSelectedObject(point);
                if (l != null)
                {
                    drawArea.Cursor = Cursors.SizeAll;
                }
                drawArea.Refresh();
            }
            if (selectMode == SelectionMode.NetSelection)
            {
                drawArea.NetRectangle = GetNormalizedRectangle(startPoint, lastPoint);
                drawArea.Refresh();
                return;
            }
        }
Example #27
0
        void ReadModbusData(modbusrtu ModbusRtu, byte SlaveAddr, ushort ModbusAddr, DataType datatype, ushort nNumber, ref string[] sValue)
        {
            ushort ntype = (ushort)((ModbusAddr / 10000));
            ushort naddr = (ushort)((ModbusAddr % 10000));

            naddr = (ushort)(naddr - 1);
            switch (ntype)
            {
            case 0:    //DO
                ushort[] coils  = new ushort[nNumber];
                bool     bcoils = ModbusRtu.SendFc1(SlaveAddr, naddr, nNumber, ref coils);
                if (bcoils)
                {
                    for (int i = 0; i < nNumber; i++)
                    {
                        sValue[i] = coils[i].ToString();
                    }
                }
                else
                {
                    for (int i = 0; i < nNumber; i++)
                    {
                        sValue[i] = "0";
                    }
                }
                break;

            case 1:    //DI
                ushort[] dis  = new ushort[nNumber];
                bool     bdis = ModbusRtu.SendFc2(SlaveAddr, naddr, nNumber, ref dis);
                if (bdis)
                {
                    for (int i = 0; i < nNumber; i++)
                    {
                        sValue[i] = dis[i].ToString();
                    }
                }
                else
                {
                    for (int i = 0; i < nNumber; i++)
                    {
                        sValue[i] = "0";
                    }
                }
                break;

            case 4:    //AO
                if (datatype.Equals("uint16"))
                {
                    ushort[] registerhold = new ushort[nNumber];
                    bool     bhold        = ModbusRtu.SendFc3(SlaveAddr, naddr, nNumber, ref registerhold);
                    if (bhold)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = registerhold[i].ToString();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = "0";
                        }
                    }
                }
                else if (datatype.Equals("int16"))
                {
                    ushort[] registerhold = new ushort[nNumber];
                    bool     bhold        = ModbusRtu.SendFc3(SlaveAddr, naddr, nNumber, ref registerhold);
                    if (bhold)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = ((short)registerhold[i]).ToString();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = "0";
                        }
                    }
                }
                else if (datatype.Equals("float"))
                {
                    ushort[] registerhold = new ushort[2 * nNumber];
                    bool     bhold        = ModbusRtu.SendFc3(SlaveAddr, naddr, (ushort)(2 * nNumber), ref registerhold);
                    if (bhold)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            int intValue = (int)registerhold[i * 2 + 1];
                            intValue <<= 16;
Fc4(SlaveAddr, naddr, (ushort)(2 * nNumber), ref registerinput);
                    if (binput)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            int intValue = (int)registerinput[2 * i + 1];
                            intValue <<= 16;
                            intValue  += (int)registerinput[2 * i + 0];
                            sValue[i]  = BitConverter.ToSingle(BitConverter.GetBytes(intValue), 0).ToString();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = "0";
                        }
                    }
                }
                else if (datatype.Equals("int32"))
                {
                    ushort[] registerinput = new ushort[2 * nNumber];
                    bool     binput        = ModbusRtu.SendFc4(SlaveAddr, naddr, (ushort)(2 * nNumber), ref registerinput);
                    if (binput)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            int intValue = (int)registerinput[2 * i + 1];
                            intValue <<= 16;
                            intValue  += (int)registerinput[2 * i + 0];
                            sValue[i]  = intValue.ToString();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = "0";
                        }
                    }
                }
                else if (datatype.Equals("uint32"))
                {
                    ushort[] registerinput = new ushort[2 * nNumber];
                    bool     binput        = ModbusRtu.SendFc4(SlaveAddr, naddr, (ushort)(2 * nNumber), ref registerinput);
                    if (binput)
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            UInt32 intValue = (UInt32)registerinput[2 * i + 1];
                            intValue <<= 16;
                            intValue  += (UInt32)registerinput[2 * i + 0];
                            sValue[i]  = intValue.ToString();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < nNumber; i++)
                        {
                            sValue[i] = "0";
                        }
                    }
                }
                break;
            }
            Invoke(showInfo, new object[] { ModbusRtu.modbusStatus, 1 });
        }

        bool WriteModbusData(modbusrtu ModbusRtu, byte SlaveAddr, ushort ModbusAddr, string datatype, string sValue)
        {
            ushort ntype = (ushort)(ModbusAddr / 10000);
            ushort naddr = (ushort)(ModbusAddr % 10000);
            bool   bok   = false;

            naddr = (ushort)(naddr - 1);
            switch (ntype)
            {
            case 0:    //DO
                short[] coils = new short[1];
                if (sValue.Equals("1"))
                {
                    coils[0] = 1;
                }
                else
                {
                    coils[0] = 0;
                }
                bok = ModbusRtu.SendFc5(SlaveAddr, naddr, coils[0]);
                break;

            case 4:    //AO
                if (datatype.Equals("uint16"))
                {
                    ushort[] registerhold = new ushort[1];
                    registerhold[0] = ushort.Parse(sValue);
                    bok             = ModbusRtu.SendFc16(SlaveAddr, naddr, 1, registerhold);
                }
                else if (datatype.Equals("int16"))
                {
                    ushort[] registerhold = new ushort[1];
                    registerhold[0] = (ushort)short.Parse(sValue);
                    bok             =Graph vs = new VisualGraph.VisualGraph();
                        vs.Name              = pagename;
                        vs.Width             = 800;
                        vs.Height            = 480;
                        vs.MouseClick       += new MouseEventHandler(vs_MouseClick);
                        vs.MouseDoubleClick += new MouseEventHandler(vs_MouseDoubleClick);
                        TabPage page = new TabPage();
                        page.Name = pagename;
                        page.Text = pagename;
                        page.Tag  = pagename;
                        page.Controls.Add(vs);
                        tabMain.TabPages.Add(page);
                        tabMain.SelectTab(pagename);
                        BinaryFormatter BinaryRead = new BinaryFormatter();
                        vs.ObjList = (ObjList)BinaryRead.Deserialize(fs);
                        //设置每个图元的lock和runmode属性
                        int count = vs.ObjList.Count();
                        for (int i = 0; i < count; i++)
                        {
                            DrawObject o = (DrawObject)vs.ObjList[i];
                            o.RunMode = true;
                            o.Lock    = true;
                        }
                        vs.BackGroundColor = (Color)BinaryRead.Deserialize(fs);;
                        fs.Close();
                        vs.Invalidate();
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Exception:" + ex.ToString(), " Save Page error.");
            }
        }