文件名称:
汉字点阵生成源码 两种方式生成 适合新手学习
开发工具:
文件大小: 484kb
下载次数: 0
上传时间: 2013-06-04
详细说明: 本例题采用两种方式列举了汉字取模方法,并用图像生动的显示出来,可以说是新手学习的好例题。 1.以16点阵汉字取模方式 通过定位读取 HZK16 文件(源码内附带这个文件,可以不用下载了)方式,详细说明实现方法。 2.通过GetGlyphOutline这个函数实现,用户可以手动选择Windows自带的字体,然后根据字体生成相应的数组,最后绘制数组显示。 以上源码楼主测试,在VC6.0下完全通过,可直接运行。 以上代码仍有很多不足之处,请大家留言指正哈. 关键代码: BOOL CPixFontTranDlg::GetGridFromHZK16(CString strFont,BYTE buffer[]) { ... AnsiCode[0]=strFont.GetAt(0); if(AnsiCode[0]<160) //英文字母和字符,转换为全角的字符内码 { BYTE temp=AnsiCode[0]; AnsiCode[0]=HIBYTE(temp-0x21+0xA3A1); //0xA3A1 是ASCII 码为0X21的字符对应的全角字符的内码,这是一个偏移量的计算 AnsiCode[1]= LOBYTE(temp-0x21+0xA3A1); } else //是汉字,则直接转换 { AnsiCode[1]=strFont.GetAt(1); } qh=AnsiCode[0]-160; //区码和位码 wh=AnsiCode[1]-160; location=(94*(qh-1)+(wh-1))*32; //HZK16 中的索引 32是一个字的字模字节数 .... } BOOL CPixFontTranDlg::GetGridFormWinSDK(CString strFont,BYTE buffer[],CString strFontName) { CFont newfont; newfont.CreateFont(16,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,strFontName); //根据字体的大小和名称创建一个字体,m_strFontName就是WINDOWS中的字体名称 ..... nLen=::GetGlyphOutline(pdc->GetSafeHdc(),chartemp,GGO_BITMAP,&glpm,0,NULL,&mmat2); //根据MSDN,cbBuffer 传入参数0,则返回值是BUFFER的大小 if((signed)nLen>0) { .... nLentemp=::GetGlyphOutline(pdc->GetSafeHdc(),chartemp,GGO_BITMAP,&glpm,nLen,pBuf,&mmat2);//重新运行,获取BUFFER的数据,pBUF就是字符对应位图的BUFFER指针 } ... offset=8-rows/2; //从点阵第一行到字的第一行的偏移量 for(i=0;i
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.