发布网友 发布时间:2022-05-16 19:23
共1个回答
热心网友 时间:2024-02-29 18:51
这个是你没有理解字模和函数的意思。
void drawmat(char *mat,int matsize,int x,int y,int color)这个函数要和char zi24[]={ /* 以下是 '字' 的 24点阵隶书 字模72byte*/
搭配着用。
也就是说,你要用字模转换工具把汉字转化成 char **88[]。然后在把这个放在函数里。
你看你的
drawmat(yi12,12,100,125,WHITE);
yi12是没有定义的。
而你看示例程序
char zi24[]={ /* 以下是 '字' 的 24点阵隶书 字模72byte*/
char mo24[]={ /* 以下是 '模' 的 24点阵楷体_GB2312 字模
定义了“字”“模”两个字。
所以函数drawmat(zi24,24,100,125,white)就是正确的。
-----------------------------------------------------------------
这样说可能你不是很明白,你可以参考一段我写的程序,下面是链接:
http://blog.csdn.net/gracefulphoenix/archive/2010/08/08/5796295.aspx
-------------------------------------------------------------------
另外字模转换工具在win-tc下就有。如图。
在超级工具集里面。
如果还有问题,可以在我的博客下留言。本人非大牛,但是可以一起讨论。
----------------------------------------------------------------------
如果你还不明白的,可以看一下这个程序,然后对比一下你的程序。就知道了。
*************************************************************
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd=VGA,gm=VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
void drawmat(char *mat,int matsize,int x,int y,int color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{
int i, j, k, n;
n = (matsize - 1) / 8 + 1;
for(j = 0; j < matsize; j++)
for(i = 0; i < n; i++)
for(k = 0;k < 8; k++)
if(mat[j * n + i] & (0x80 >> k)) /*测试为1的位则显示*/
putpixel(x + i * 8 + k, y + j, color);
}
char yang12S[]={
/* 以下是 '阳' 的 12点阵宋体 字模,24 byte */
0xF7,0xC0,0x94,0x40,0x94,0x40,0xA4,0x40,
0xA7,0xC0,0x94,0x40,0x94,0x40,0xF4,0x40,
0x84,0x40,0x87,0xC0,0x84,0x40,0x00,0x00,
};
char guang12S[]={
/* 以下是 '光' 的 12点阵宋体 字模,24 byte */
0x04,0x00,0x44,0x40,0x24,0x80,0x15,0x00,
0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x00,
0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,
};
int main(void)
{
int i, j;
initgr(); /* BGI初始化 */
setcolor(10);
/*我定义的是"阳光"两个字,所以,要在主函数前,把阳光这两个字的字模计算出来。在上面,看到了吗。*/
drawmat(yang12S,12,100,100,10);/*就是“阳”*/
drawmat(guang12S,12,200,200,10);/*就是"光"*/
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
*****************************************************************