赞
踩
前段时间碰到的一个项目要求在LCD上显示收到的短信,需要12×12的GB2312点阵字库。因为板子上已经放了块W25Q64了,就想着找个字库烧进去。最后虽然是用HZK12,但是总感觉不能释然,于是打算写个用系统字体库来生成点阵字库的工具。
网上有很多有这类的代码,不过我好像没找到我需要的。
思路是这样
首先为了遍历GB2312,要能用区码和位码生成汉字
//用GB2312区码和位码获取字符
public static string GetGB2312CH(byte areaCode, byte bitCode) {
return Encoding.GetEncoding("gb2312").GetString(new byte[2]{areaCode, bitCode});
}
然后把汉字绘制到Bitmap
//获取字符串图片
public static Bitmap GetStrImage(string hz, Font font) {
Bitmap bmp = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bmp);
SizeF sizeF = g.MeasureString(hz, font);
//重设位图大小
bmp = new Bitmap(Convert.ToInt32(sizeF.Width), Convert.ToInt32(sizeF.Height));
g = Graphics.FromImage(bmp);
//背景色黑色
g.Clear(Color.Black);
g.DrawString(hz, font, new SolidBrush(Color.White), new PointF(0, 0));
return bmp;
}
再按点阵字库的要求提取Bitmap上的像素点数据,我只用到了列行式顺向的点阵
//检查Bitmap的一行有没有有效数据
public static bool CheckBitmapRow(Bitmap src, int row) {
for (int i=0; i<src.Width; i++) {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。