回 帖 发 新 帖 刷新版面

主题:输出汉字  有加分~~~

在阿Ben:[原创]贪食蛇+扫雷 2 in 1 游戏,中文界面!!
我看到了汉字,由于程序太长,我没看懂汉字如何输出,谁能教教我.
我加30~~~~~分

回复列表 (共31个回复)

沙发

请看看以下帖子:
[url=http://www.programfan.com/club/showbbs.asp?id=14025]http://www.programfan.com/club/showbbs.asp?id=14025[/url]

板凳

林记,我是想问 假如我要打印"我是中国人"这句话,该怎么做?我主要是想看看输出汉字要哪些步骤
你提供的帖子,有点长,我有些看不懂~~~

3 楼

是不是有一种叫点阵的处理方法??林兄

4 楼

嘿嘿,我也不明白,麻烦讲清楚一点,同样学习学习!~

5 楼

例:在点(300,200)中用白色(代码为15)输出“我是中国人”,每个字之间隔5像素。

outchinese(300,200,'我是中国人',5,15);

6 楼

关于原理,我也不太明白,输出汉字的过程都是照抄jtchang“作图模式下显示汉字”这帖子的。

7 楼

同意5楼的……

8 楼

jtchang的程序太长,我不知道输出汉字前该抄哪段过程,哪位明白请给我写一下~~

9 楼

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 楼

function inttostr(n:integer):string;
这个函数可以不要

我来回复

您尚未登录,请登录后再回复。点此登录或注册