Exemple #1
0
        public void buildControlToBin(ref PageArrayBin pageArrayBin, ref SVSerialize serialize)
        {
            if (pageArrayBin.pageArray == null)
            {
                pageArrayBin.pageArray = new PageBin[SVLimit.MAX_PAGE_NUMBER];
            }

            UInt32  nCount  = pageArrayBin.pageCount;
            PageBin pageBin = pageArrayBin.pageArray[nCount];

            pageBin.id    = _attrib.id;
            pageBin.bgSet = _attrib.BackGroundType;

            pageBin.bgClr      = (UInt32)_attrib.BackColor.ToArgb();
            pageBin.index      = (UInt16)pageArrayBin.pageCount;
            pageBin.pointAlign = _attrib.IsAlignment;

            if (pageBin.bgSet == 1)
            {
                var address = _attrib.PicIconData.bitmap24Data(this.Width, this.Height);
                if (address != null)
                {
                    //背景图标位置
                    if (_backGroundPicData.ContainsKey(_attrib.PicIconData.ShowName))
                    {
                        pageBin.bgClr = _backGroundPicData[_attrib.PicIconData.ShowName];
                    }
                    else
                    {
                        pageBin.bgClr = (UInt32)serialize.ToArray().Length;
                        _backGroundPicData.Add(_attrib.PicIconData.ShowName, pageBin.bgClr);
                        serialize.pack(address);
                    }
                }
            }

            pageArrayBin.pageArray[nCount] = pageBin;
            //遍历所有子控件
            foreach (Control ctrl in this.Controls)
            {
                SVInterfaceBuild bin = ctrl as SVInterfaceBuild;
                if (bin == null)
                {
                    continue;
                }
                bin.buildControlToBin(ref pageArrayBin, ref serialize);
            }

            pageArrayBin.pageCount++;
        }
Exemple #2
0
        public void fromBin(PageBin bin, byte[] picBuffer)
        {
            if (bin.bgSet == 0)
            {
                ///背景颜色显示
                this.BackColor = Color.FromArgb((Int32)bin.bgClr);
            }
            else
            {
                ///背景图片显示
                SVPixmapFile file = new SVPixmapFile();
                this.BackgroundImage = file.getFromFile(picBuffer, bin.bgClr);
            }

            this.ID = bin.id;
        }
Exemple #3
0
        /// <summary>
        /// 解析数据将布局当前所有控件
        /// </summary>
        /// <param Name="bin">二进制数据</param>
        /// <param Name="isFirst">是否为其实页面 true表示起始页面</param>
        void fromPageBin(PageBin bin, Boolean isFirst)
        {
            SVSPage page = new SVSPage();

            page.fromBin(bin, picBuffer);

            ///标题栏高度
            Int32 titleHeight = this.Height - this.ClientRectangle.Height;

            ///设置窗口起始位置和宽高尺寸
            this.Size = new Size(page.Attrib.Width + 200, page.Attrib.Height + titleHeight);
            page.Size = this.Size;
            ///设置控件显示尺寸
            mainPanel.Location = new Point(0, 0);
            mainPanel.Size     = new Size(page.Attrib.Width, page.Attrib.Height);
            ///设置数据显示
            dataPanel.Location = new Point(mainPanel.Location.X + mainPanel.Width, mainPanel.Location.Y);
            dataPanel.Size     = new Size(200, mainPanel.Height);

            page.Paint += new PaintEventHandler((sender, e) =>
            {
                for (int i = 0; i < bin.lineNum; i++)
                {
                    LineBin lineBin = bin.m_line[i];
                    Graphics gh     = e.Graphics;

                    Color lineColor  = Color.FromArgb((Int32)lineBin.color);
                    SolidBrush brush = new SolidBrush(lineColor);
                    Pen pen          = new Pen(brush, lineBin.width);
                    gh.DrawLine(pen, lineBin.x1, lineBin.y1, lineBin.x2, lineBin.y2);
                }
            });

            //添加ID和页面的映射关系
            pageDict.Add(page.ID, page);

            for (int i = 0; i < bin.btnNum; i++)
            {
                SVSButton button = new SVSButton();
                button.fromBin(bin.m_btn[i], picBuffer);
                page.Controls.Add(button);

                ButtonBin bbb = bin.m_btn[i];
                button.Click += new EventHandler((sender, e) =>
                {
                    UInt16 id = (UInt16)(bbb.param.pageId);
                    if (pageDict.ContainsKey(id))
                    {
                        SVSPage vPage = pageDict[id];
                        this.mainPanel.Controls.Clear();
                        this.mainPanel.Controls.Add(vPage);
                    }
                });
            }

            ///添加所有的模拟量控件
            for (int i = 0; i < bin.analog_num; i++)
            {
                SVSAnalog analog = new SVSAnalog(_timer);
                analog.fromBin(bin.m_analog[i]);
                page.Controls.Add(analog);

                analog.MouseDown += new MouseEventHandler((sender, e) =>
                {
                    this.dataPanel.Controls.Clear();
                    this.dataPanel.Controls.Add(analog.DataControl);
                });
            }

            ///添加所有开关量控件
            for (int i = 0; i < bin.binaryNum; i++)
            {
                SVSBinary binary = new SVSBinary(_timer);
                binary.fromBin(bin.m_binary[i], picBuffer);
                page.Controls.Add(binary);

                binary.MouseDown += new MouseEventHandler((sender, e) =>
                {
                    this.dataPanel.Controls.Clear();
                    this.dataPanel.Controls.Add(binary.DataControl);
                });
            }

            for (int i = 0; i < bin.trendChartNum; i++)
            {
                SVSCurve curve = new SVSCurve();
                curve.fromBin(bin.m_trendChart[i]);
                page.Controls.Add(curve);
            }

            for (int i = 0; i < bin.gif_num; i++)
            {
                SVSGif gif = new SVSGif(_timer);
                gif.fromBin(bin.m_gif[i], picBuffer);
                page.Controls.Add(gif);
            }


            for (int i = 0; i < bin.iconNum; i++)
            {
                SVSIcon icon = new SVSIcon();
                icon.fromBin(bin.m_icon[i], picBuffer);
                page.Controls.Add(icon);
            }

            for (int i = 0; i < bin.areaNum; i++)
            {
                SVSLabel label = new SVSLabel();
                label.fromBin(bin.m_area[i]);
                page.Controls.Add(label);
            }

            for (int i = 0; i < bin.tickNum; i++)
            {
                SVSHeartBeat heart = new SVSHeartBeat(_timer);
                heart.fromBin(bin.m_tick[i], picBuffer);
                page.Controls.Add(heart);

                heart.MouseDown += new MouseEventHandler((sender, e) =>
                {
                    this.dataPanel.Controls.Clear();
                    this.dataPanel.Controls.Add(heart.DataControl);
                });
            }

            if (isFirst)
            {
                this.mainPanel.Controls.Clear();
                this.mainPanel.Controls.Add(page);
            }
        }