使用Stream,PrintDocument,自己看看msdn吧。
解决方案 »
- 汉字折成2个char后,在C#中的还原问题..
- 怎样在没有安装vs的电脑上运行C#程序啊?
- socket发送字符串,不要转换成byte[]流
- 如何通过IP链接远程数据库?
- 如何确定一个字符串的长度是多少像素
- replace语句她就是不工作!郁闷!
- vs2005中 tabcontrol控件程序中如何访问和改变tabpage1、tabpage2的属性
- 请问在用UserID=Request.ServerVariables["AUTH_USER"].Trim();取windows用户
- 关于TEXTBOX自动换行的问题
- asp.net core +EF+MySql(code first fluentapi)
- 如何获得字符的ASCII码?
- 初学VC#,有些地方不太明白。
#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;
}不知道正确应该怎么改