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; }
/// <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]; }