c# 点阵字体
作者:admin 发布于:2012-9-10 13:11 Monday 分类:.NET
List<byte[]> listMsg = new List<byte[]>(); for (int index = 0; index < message.Length; index++) { FileStream fsAsc16 = new FileStream("ASC16", FileMode.Open); //将"ASC16"字库文件读入文件流 FileStream fsHzk16 = new FileStream("HZK16", FileMode.Open); //将"HZK16"字库文件读入文件流 string s = message.Substring(index, 1); if (Convert.ToChar(s) < 256) //判断是否为中文,小于256为字符 { byte[] bMsg = new byte[16]; int offset = cnt * (byte)(s[0]); fsAsc16.Seek(offset, SeekOrigin.Begin); fsAsc16.Read(bMsg, 0, 16); listMsg.Add(bMsg); } else { byte[] bMsg = new byte[32]; byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(s.ToCharArray()); int offset = 32 * (94 * (bytes[0] - 0xA1) + bytes[1] - 0xA1); fsHzk16.Seek(offset, SeekOrigin.Begin); fsHzk16.Read(bMsg, 0, 32); byte[] bMsgH = new byte[cnt]; byte[] bMsgL = new byte[cnt]; int l = 0; int h = 0; for (int j = 0; j < cnt * 2; j++) { if (j % 2 == 0) bMsgH[h++] = bMsg[j]; else bMsgL[l++] = bMsg[j]; } listMsg.Add(bMsgH); listMsg.Add(bMsgL); } fsAsc16.Close(); fsHzk16.Close(); } //为字节数组排序 byte[] bMessages = new byte[list.Count * 16]; for (int i = 0; i < list.Count; i++) { for (int j = 0; j < list[i].Length; j++) { bMessages[i + j * list.Count] = list[i][j]; } }
标签: 点阵