主题:输出汉字 有加分~~~
绿步甲
[专家分:1610] 发布于 2005-08-28 19:54:00
在阿Ben:[原创]贪食蛇+扫雷 2 in 1 游戏,中文界面!!
我看到了汉字,由于程序太长,我没看懂汉字如何输出,谁能教教我.
我加30~~~~~分
回复列表 (共31个回复)
沙发
林记 [专家分:1680] 发布于 2005-08-28 20:21:00
请看看以下帖子:
[url=http://www.programfan.com/club/showbbs.asp?id=14025]http://www.programfan.com/club/showbbs.asp?id=14025[/url]
板凳
绿步甲 [专家分:1610] 发布于 2005-08-28 21:22:00
林记,我是想问 假如我要打印"我是中国人"这句话,该怎么做?我主要是想看看输出汉字要哪些步骤
你提供的帖子,有点长,我有些看不懂~~~
3 楼
stuart920106 [专家分:730] 发布于 2005-08-28 22:23:00
是不是有一种叫点阵的处理方法??林兄
4 楼
yukangcool [专家分:460] 发布于 2005-08-28 22:23:00
嘿嘿,我也不明白,麻烦讲清楚一点,同样学习学习!~
5 楼
阿Ben [专家分:2200] 发布于 2005-08-28 22:47:00
例:在点(300,200)中用白色(代码为15)输出“我是中国人”,每个字之间隔5像素。
outchinese(300,200,'我是中国人',5,15);
6 楼
阿Ben [专家分:2200] 发布于 2005-08-28 22:50:00
关于原理,我也不太明白,输出汉字的过程都是照抄jtchang“作图模式下显示汉字”这帖子的。
7 楼
lzl1403 [专家分:1670] 发布于 2005-08-29 16:55:00
同意5楼的……
8 楼
绿步甲 [专家分:1610] 发布于 2005-08-29 19:42:00
jtchang的程序太长,我不知道输出汉字前该抄哪段过程,哪位明白请给我写一下~~
9 楼
林记 [专家分:1680] 发布于 2005-08-29 22:19:00
HZK16就是UCDOS的中文点阵文件嘛,
里面有所有汉字的点阵数据,
通过汉字的编码和索引可以在文件中找到
它的点阵数据,再用PutPixel写到屏幕上
把以下过程写成Unit就可以用了
var
gd,gm,q,w,x,y,ErrCode:integer;
s:string;
ch:char;
function inttostr(n:integer):string;
var
s:string;
begin
s:='';
repeat
s:=chr(ord('0')+n mod 10)+s;
n:=n div 10;
until n=0;
inttostr:=s;
end;
procedure putone(x,y:integer;s:string;color:integer);
type
chinesep=array[1..32] of byte;
var
a:chinesep;
f:file of chinesep;
i,j,x0,y0:integer;
k:byte;
q,w:longint;
begin
q:=ord(s[1])-160;
w:=ord(s[2])-160;
q:=(q-1)*94+(w-1);
assign(f,'HZK16') ;
reset(f);
if (q<0) or (q>=filesize(f)) then
begin
close(f);
exit;
end;
seek(f,q);
read(f,a);
close(f);
y0:=y;
for i:=1 to 32 do
begin
k:=a[i];
if i mod 2=1 then
begin
x0:=7+x;
y0:=y0+1;
end
else
x0:=15+x;
for j:=1 to 8 do
begin
if k and 1 =1 then putpixel(x0,y0,color);
x0:=x0-1;
k:=k shr 1;
end;
end;
end;
procedure outchinese(x,y:integer;s:string;blank:integer; color:integer);
var
temps:string;
k:integer;
begin
k:=1;
while k<length(s) do
begin
temps:=s[k]; k:=k+1;
temps:=temps+s[k]; k:=k+1;
putone(x+(k div 2-1)*(16+blank),y,temps,color);
end;
end;
10 楼
阿Ben [专家分:2200] 发布于 2005-08-29 22:59:00
function inttostr(n:integer):string;
这个函数可以不要
我来回复