想用没有汉字字库的打印机打印汉字,有没有例子啊?

vc1214 2005-12-29 02:42:24
我知道是用图形方式打印,但怎马具体去打印,怎样去描点,希望大家给个例子
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
屋顶上的老猫 2005-12-30
  • 打赏
  • 举报
回复
结合上面讲的给你这个打印程序,看看就知道了!
#include <graphics.h>
#include <stdio.h>
#include <dos.h>
#include <bios.h>

#define ESC 27
int prt_graph()
{
int i,j,k,m,Msb,Lsb,MaxX,MaxY;
MaxX=getmaxx();
MaxY=getmaxy();
fprintf(stdprn,"%c%c%c",ESC,'A',0x07);
Lsb=MaxX%256;
Msb=MaxY/256;
for(j=0;j<MaxY/8;j++)
{
fprintf(stdprn,"%c%c%c%c%c",ESC,'*',0,Lsb,Msb);
for(i=0;i<MaxX;i++)
{
m=0;
for(k=0;k<7;k++)
{
m=m<<1;
if(getpixel(i,j*8+k)!=0)
m++;
}
fprintf(stdprn,"%c",m);
}
fprintf(stdprn,"%c%c",0x0d,0x0a);
}
}

main()
{
int Driver=DETECT,Mode;
initgraph(&Driver,&Mode,"");
cleardevice();
rectangle(10,10,200,200);
prt_graph();
}
屋顶上的老猫 2005-12-30
  • 打赏
  • 举报
回复
不是去描点,而是把荧屏输出重定向到打印机而已!
具体步骤如下:
打印机图形设置模式:fprintf(stdprn,"%c%c%c",ESC,'A',0x07);

打印机接受8位数据,打印宽度MaxX分高位和低位两个8位参数Lsb和Msb
计算方法:Lsb=MaxX%256;
Msb=MaxX/256;

给打印机发出图形模式命令,由屏幕的顶点起,每次循环画出8个垂直象素
for(j=0;j<maxY/8;j++)
fprintf(strprn,"%c%c%c%c%c",'ESC','*',0,Lsb,Msb);
串指令ESC+*为图形模式,0表示肖像模式,Lsb和Msb则表示数据字节,接下来循环宽度maxX方向

然后把数据送给打印机
fprintf(stdprn,"%c",m); //m为字符的初始值,设置为0

最后回车换行指令fprintf(stdprn,"%c%c",0x0d,0x0a);
vc1214 2005-12-29
  • 打赏
  • 举报
回复
d

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧