首页 新闻 会员 周边 捐助

关于API 的GetGlyphOutline()方法问题

0
悬赏园豆:50 [已关闭问题] 关闭于 2009-11-07 18:01

想做个单片机的16*16的汉字取模软件,在网上找了好久还是没解决!这是我的代码,望高手帮我看下。想把一个字符的16*16点阵数据取出来。

 

Code

 

Code

 

Code

 

Code

不知道这样做对不对。取的数据哪些是需要的数据呢!谢谢啦!

问题补充: 代码打不开。。。 private uint GetGB2312Coding(char ch) {//获得字符的GB码 byte[] bts = Encoding.GetEncoding("GB2312").GetBytes(new char[] { ch }); uint val = bts[0]; if (bts.Length > 1) { val = val * 256 + bts[1]; } return val;} private void button1_Click(object sender, EventArgs e) {//将取出的信息显示在richTextBox1里面 richTextBox1.Text = ""; foreach (char t in textBox1.Text) { uint ch = GetGB2312Coding(t); Graphics g = Graphics.FromHwnd(IntPtr.Zero); IntPtr hdc = g.GetHdc(); //将字体选入场景 IntPtr fontPtr = textBox1.Font.ToHfont(); GdiNativeMethods.SelectObject(hdc, fontPtr); MAT2 mat2 = new MAT2(); mat2.eM11.value = 1; mat2.eM22.value = 1; GLYPHMETRICS lpGlyph = new GLYPHMETRICS(); //获取缓存区大小 int bufferSize = GdiNativeMethods.GetGlyphOutline(hdc, ch, a, out lpGlyph, 0, IntPtr.Zero, ref mat2); if (bufferSize > 0) { //获取成功后,分配托管内存 IntPtr ipvbuffer = Marshal.AllocHGlobal(bufferSize); int ret = GdiNativeMethods.GetGlyphOutline(hdc, ch, a, out lpGlyph, (uint)bufferSize, ipvbuffer, ref mat2); if (ret > 0) { byte[] b = new byte[bufferSize]; for (int i = 0; i < bufferSize; i++) { b[i] = Marshal.ReadByte((IntPtr)(ipvbuffer.ToInt32() + i * 8)); richTextBox1.Text += b[i].ToString() + "\r\n"; }} label1.Text =ret.ToString() } }
作业本本的主页 作业本本 | 初学一级 | 园豆:140
提问于:2009-11-06 10:48
< >
分享
所有回答(1)
0

代码展不开,编辑下吧

Launcher | 园豆:45050 (高人七级) | 2009-11-06 10:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册