汉字笔画的计算。
来源:互联网 发布:淘宝消费总额查询 编辑:程序博客网 时间:2024/05/17 00:19
哈,新发现,通过提取楷体的字形轮廓可以获得汉字笔画。只不过选用的字体必须是楷体。其他字体不行。
这功能没什么用途吧,我只是好玩而已。
测试:
运行结果:
"疆"的笔画19
这功能没什么用途吧,我只是好玩而已。
- int GetCharStrokes(UINT ch)
- {
- HFONT hFont;
- { // create font;
- LOGFONT lfFont;
- memset(&lfFont, 0, sizeof(lfFont));
- lstrcpy(lfFont.lfFaceName, "楷体_GB2312");
- lfFont.lfHeight = 72;
- lfFont.lfWeight = FW_NORMAL;
- lfFont.lfItalic = FALSE;
- lfFont.lfStrikeOut = FALSE;
- lfFont.lfCharSet = DEFAULT_CHARSET;
- lfFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
- lfFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
- lfFont.lfQuality = DRAFT_QUALITY;
- lfFont.lfPitchAndFamily = DEFAULT_PITCH;
- hFont = CreateFontIndirect(&lfFont);
- }
- HDC hDC = GetDC(NULL);
- if (hDC==NULL) return 0;
- HGDIOBJ hOldFont = SelectObject(hDC,hFont);
- MAT2 mat;
- memset(&mat,0,sizeof(mat));
- mat.eM11.value = 1;
- mat.eM22.value = -1;
- GLYPHMETRICS gm;
- memset(&gm,0,sizeof(gm));
- DWORD dwSize = GetGlyphOutline(hDC,ch,GGO_NATIVE,&gm,0,NULL,&mat);
- int cnt = 0;
- LPVOID pBuff = NULL;
- if (dwSize>0)
- {
- pBuff = malloc(dwSize);
- memset(&gm,0,sizeof(gm));
- DWORD res = GetGlyphOutline(hDC,ch,GGO_NATIVE,&gm,dwSize,pBuff,&mat);
- if (res!=dwSize)
- {
- free(pBuff);
- pBuff = NULL;
- }
- }
- if (pBuff)
- {
- BYTE * ptr = (BYTE *)pBuff;
- while (dwSize>0)
- {
- TTPOLYGONHEADER * header = (TTPOLYGONHEADER *)ptr;
- cnt ++;
- ptr += header->cb;
- dwSize -= header->cb;
- }
- free(pBuff);
- }
- SelectObject(hDC,hOldFont);
- ReleaseDC(NULL,hDC);
- return cnt;
- }
测试:
- union {
- UINT ch;
- char szText[4];
- } a;
- char * szText = "疆";
- a.ch = 0;
- a.szText[1] = szText[0];
- a.szText[0] = szText[1];
- int cnt = GetCharStrokes(a.ch);
- TRACE("/"%s/"的笔画%d/n",szText,cnt);
"疆"的笔画19
- 汉字笔画的计算。
- VBS计算汉字笔画
- VBS 计算汉字笔画数
- EXCEL不用编程计算汉字笔画的方法
- C# 计算中文汉字笔画数
- C# 计算中文汉字笔画数
- VB计算汉字笔画数代码
- 判断汉字的笔画数
- 取得汉字笔画的源码
- 获得汉字的笔画(源码)
- 取得汉字的笔画的源码
- 获取GBK编码的汉字笔画数
- 利用GDI书写汉字的笔画顺序
- 用java实现汉字的笔画数
- 如何获取汉字的首笔画编码
- 汉字的奥秘: 获取汉字的笔画数
- 取得汉字笔画数
- 得到汉字笔画
- 搭建性能比squid高很多的varnish服务器
- AE 对象模型图
- HTTP MIME类型即HttpResponse.ContentType属性值列表
- 读取XML文件
- 使用Microsoft HTML Help Workshop制作CHM帮助文件
- 汉字笔画的计算。
- Windows Mobile 6 (1) ----Windows Mobile 6 中为开发人员提供的新功能
- 按比例保存图片
- 上传图片到数据库及显示
- 既能输入又能选择的DropDownList控件
- 某大型电子商务网站在招一个PHP开发经理
- 工程传奇——会飞的猪
- Linux系统下C语言编程 线程操作入门常识
- An Introduction to Project Management