Esempio n. 1
0
        public void make(ref PageArrayBin pageArrayBin, ref SVSerialize serialize)
        {
            UInt32 pageCount = pageArrayBin.pageCount;
            UInt32 areaCount = pageArrayBin.pageArray[pageCount].areaNum++;

            if (pageArrayBin.pageArray[pageCount].m_area == null)
            {
                pageArrayBin.pageArray[pageCount].m_area = new AreaBin[SVLimit.PAGE_AREA_MAXNUM];
            }

            AreaBin areaBin = pageArrayBin.pageArray[pageCount].m_area[areaCount];

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

            areaBin.fontClr = (UInt32)FrontColorground.ToArgb();
            areaBin.bgClr   = (UInt32)BackColorground.ToArgb();

            areaBin.text = new Byte[SVLimit.TEXT_MAX_LEN];
            copyDestByteArray(Encoding.Unicode.GetBytes(Text), areaBin.text);

            areaBin.font        = (Byte)_font.Size;
            areaBin.align       = Align;
            areaBin.transparent = Transparent ? (Byte)1 : (Byte)0;

            pageArrayBin.pageArray[pageCount].m_area[areaCount] = areaBin;
        }
Esempio n. 2
0
        /// <summary>
        /// 解析文本并仿真
        /// </summary>
        /// <param Name="bin">文本内存结构对象</param>
        public void fromBin(AreaBin bin)
        {
            Attrib.BackColorground = Color.FromArgb((Int32)bin.bgClr);

            this.ForeColor    = Color.FromArgb((Int32)bin.fontClr);
            this.BTransparent = (bin.transparent == 1);
            if (BTransparent)
            {
                this.BackColor = Color.Transparent;
            }
            else
            {
                this.BackColor = Color.FromArgb((Int32)bin.bgClr);
            }

            Refresh();

            ///位置和尺寸
            this.Location = new Point(bin.rect.sX, bin.rect.sY);
            this.Width    = bin.rect.eX - bin.rect.sX;
            this.Height   = bin.rect.eY - bin.rect.sY;

            ///文本内容
            int len = 0;

            for (int i = 0; i < bin.text.Length; i += 2)
            {
                if (bin.text[i] == 0 && bin.text[i + 1] == 0)
                {
                    break;
                }

                len += 2;
            }
            this.Text = System.Text.Encoding.Unicode.GetString(bin.text, 0, len);

            ///对齐方式
            Dictionary <Int32, ContentAlignment> dict = new Dictionary <Int32, ContentAlignment>()
            {
                { 0, ContentAlignment.TopLeft },
                { 1, ContentAlignment.TopRight },
                { 2, ContentAlignment.TopCenter },
                { 3, ContentAlignment.MiddleCenter }
            };

            this.TextAlign = dict[bin.align];

            ///设置字体
            Dictionary <Byte, Font> FontConfig = new Dictionary <Byte, Font>()
            {
                { 8, new Font("华文细黑", 8) },
                { 12, new Font("华文细黑", 12) },
                { 16, new Font("华文细黑", 16) }
            };

            this.Font = FontConfig[bin.font];
        }