コード例 #1
0
        public void make(ref PageArrayBin pageArrayBin, ref SVSerialize serialize)
        {
            UInt32 pageCount  = pageArrayBin.pageCount;
            UInt32 heartCount = pageArrayBin.pageArray[pageCount].tickNum++;

            if (pageArrayBin.pageArray[pageCount].m_tick == null)
            {
                pageArrayBin.pageArray[pageCount].m_tick = new TickBin[SVLimit.PAGE_TICKGIF_MAXNUM];
            }


            TickBin tickBin = pageArrayBin.pageArray[pageCount].m_tick[heartCount];

            tickBin.imageOffsetList = new UInt32[8];

            tickBin.id      = ID;
            tickBin.rect.sX = (UInt16)Rect.X;
            tickBin.rect.sY = (UInt16)Rect.Y;
            tickBin.rect.eX = (UInt16)(Rect.Width + tickBin.rect.sX - 1);
            tickBin.rect.eY = (UInt16)(Rect.Height + tickBin.rect.sY - 1);

            ///保存所有图片数据
            List <SVBitmap> list = _bitMapArray.imageArray();

            tickBin.count = (Byte)list.Count;

            for (int i = 0; i < list.Count; i++)
            {
                var offset = list[i];
                tickBin.imageOffsetList[i] = (UInt32)serialize.ToArray().Length;
                serialize.pack(offset.bitmap8Data(Rect.Width, Rect.Height));
            }

            pageArrayBin.pageArray[pageCount].m_tick[heartCount] = tickBin;
        }
コード例 #2
0
        /// <summary>
        /// 从二进制数据中解析心跳控件数据
        /// 并在界面上设置响应的值和事件
        /// </summary>
        /// <param Name="tickBin">心跳控件内存数据</param>
        /// <param Name="picBuffer">图片数据</param>
        internal void fromBin(TickBin tickBin, byte[] picBuffer)
        {
            ///设置控件位置和大小
            this.Location = new Point(tickBin.rect.sX, tickBin.rect.sY);
            this.Width    = tickBin.rect.eX - tickBin.rect.sX;
            this.Height   = tickBin.rect.eY - tickBin.rect.sY;

            ///保存当前心跳控件中的所有图片到一个队列中
            Int32         count      = tickBin.count;
            List <Bitmap> bitmapList = new List <Bitmap>();

            for (int i = 0; i < count; i++)
            {
                SVPixmapFile file   = new SVPixmapFile();
                Bitmap       bitmap = file.getFromFile(picBuffer, tickBin.imageOffsetList[i]);
                bitmapList.Add(bitmap);
            }

            ///根据用户输入来显示对应图片
            _dataControl.Num.Minimum       = 1;
            _dataControl.Num.Maximum       = count;
            _dataControl.Num.Increment     = 1;
            _dataControl.Num.ValueChanged += new EventHandler((sender, e) =>
            {
                Int32 nIndex         = (Int32)_dataControl.Num.Value - 1;
                this.BackgroundImage = bitmapList[nIndex];
            });

            ///按照定时器的时间循环播放图片
            Int32 index = 0;

            _timer.Tick += new EventHandler((sender, e) =>
            {
                if (!_dataControl.AutoPlay.Checked)
                {
                    return;
                }

                this.BackgroundImage = bitmapList[index];

                index++;
                _dataControl.Num.Value = index;

                if (index == count)
                {
                    index = 0;
                }
            });
        }