成功把C代码转换成C#代码的送出120分!!
csky 2002-04-15 11:21:44 #include <stdlib.h>
#include <stdio.h>
#include <graphics.h>
#include <string.h>
#define HZK16 "hzk16"
int test(unsigned int a,int k)
{
a<<=(k-1);
if(a&0x80)
return (1);
else
return (0);
}
void hz16(int X,int Y,char *zw,int c)
{ int n=0;
while(n!=strlen(zw)){ register int i,j;
register int xx=0;
register int yy=0;
FILE *fp;char *wm;long num;
fp=fopen(HZK16,"rb++");
if(fp==NULL){/*打开hzk16字库错误*/exit(0);}
if((zw[n]&0x80)==0)
{
num=188+zw[n]-33;
fseek(fp,(32)*num,0);
fread(wm,32,1,fp);
fclose(fp);
for(i=0;i<32;i++)
{for(j=1;j<=8;j++)
if(test(wm[i],j)==0)
xx++;
else{putpixel((xx)+X,Y+yy,c);xx++;}
if((i+1)%2==0){xx=0;yy++;}
}X=X+16;n=n+1;
}else{
zw[n]=zw[n]&0x7f;
zw[n+1]=zw[n+1]&0x7f;
zw[n]=zw[n]-0x20;
zw[n+1]=zw[n+1]-0x20;
num=(zw[n]-1)*94+(zw[n+1]-1);
fseek(fp,(32)*num,0);
fread(wm,32,1,fp);
fclose(fp);
for(i=0;i<32;i++)
{for(j=1;j<=8;j++)
if(test(wm[i],j)==0)
xx++;
else{putpixel((xx)+X,Y+yy,c);xx++;}
if((i+1)%2==0){xx=0;yy++;}
}X=X+16;n=n+2;
}}
}
这段代码怎么变成C#
我变了一些,不过很多错误。。
static public void DrawString(string s, Font font, Brush brush, int x,int y, Graphics g)
{
int n = 0;
while (s.Length != 0)
{
Pen p = new Pen(brush, 1);
int i, j;
int xx = 0;
int yy = 0;
FileStream fs = File.OpenRead("HZK16");
char[] zw = s.ToCharArray(0, s.Length);
byte[] wm = null;
long num;
if ((zw[n] & 0x80) == 0)
{
num=188 + zw[n] - 33;
fs.Seek((32) * num, 0);
fs.Read(wm, 32, 1);
fs.Close();
for(i=0;i<32;i++)
{
for(j=1;j<=8;j++)
{
if(test(wm[i],j))
{
xx++;
}
else
{
g.DrawLine(p, new Point(xx + x, yy + y), new Point(xx + x, yy + y));
//putpixel((xx)+X,Y+yy,c);
xx++;
}
} //end of for
if((i + 1) % 2 == 0)
{
xx=0;
yy++;
}
} // end of for
x = x + 16;
n = n + 1;
}
else
{
zw[n] = zw[n] & 0x7f;
zw[n+1] = zw[n+1] & 0x7f;
zw[n] = zw[n] - 0x20;
zw[n+1] = zw[n+1] - 0x20;
num = (zw[n] - 1) * 94 + (zw[n+1] - 1);
fs.Seek(32 * num, 0);
fs.Read(wm, 32, 1);
for(i=0;i<32;i++)
{
for(j=1;j<=8;j++)
{
if(test(wm[i],j)==0)
{
xx++;
}
else
{
g.DrawCurve(p, new Point(xx + x, yy + y));
//putpixel((xx)+X,Y+yy,c);
xx++;
}
}
if ((i+1) % 2 == 0)
{
xx=0;
yy++;
}
}
X=X+16;
n=n+2;
}
}
} //end of method DrawString
static public bool test(int a,int k)
{
a << =(k-1);
if (a & 0x80)
return true;
else
return false;
}
不知道正确应该怎么改