画图软件C程序代码Word文档格式.docx

上传人:b****1 文档编号:5677938 上传时间:2023-05-05 格式:DOCX 页数:45 大小:22.27KB
下载 相关 举报
画图软件C程序代码Word文档格式.docx_第1页
第1页 / 共45页
画图软件C程序代码Word文档格式.docx_第2页
第2页 / 共45页
画图软件C程序代码Word文档格式.docx_第3页
第3页 / 共45页
画图软件C程序代码Word文档格式.docx_第4页
第4页 / 共45页
画图软件C程序代码Word文档格式.docx_第5页
第5页 / 共45页
画图软件C程序代码Word文档格式.docx_第6页
第6页 / 共45页
画图软件C程序代码Word文档格式.docx_第7页
第7页 / 共45页
画图软件C程序代码Word文档格式.docx_第8页
第8页 / 共45页
画图软件C程序代码Word文档格式.docx_第9页
第9页 / 共45页
画图软件C程序代码Word文档格式.docx_第10页
第10页 / 共45页
画图软件C程序代码Word文档格式.docx_第11页
第11页 / 共45页
画图软件C程序代码Word文档格式.docx_第12页
第12页 / 共45页
画图软件C程序代码Word文档格式.docx_第13页
第13页 / 共45页
画图软件C程序代码Word文档格式.docx_第14页
第14页 / 共45页
画图软件C程序代码Word文档格式.docx_第15页
第15页 / 共45页
画图软件C程序代码Word文档格式.docx_第16页
第16页 / 共45页
画图软件C程序代码Word文档格式.docx_第17页
第17页 / 共45页
画图软件C程序代码Word文档格式.docx_第18页
第18页 / 共45页
画图软件C程序代码Word文档格式.docx_第19页
第19页 / 共45页
画图软件C程序代码Word文档格式.docx_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

画图软件C程序代码Word文档格式.docx

《画图软件C程序代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《画图软件C程序代码Word文档格式.docx(45页珍藏版)》请在冰点文库上搜索。

画图软件C程序代码Word文档格式.docx

/*这里的字模数组均由“点阵字模工具”生成,你可以用你自己需要的点阵信息来

替换示例中的字模信息,注意字模大小要一致,否则显示会出问题。

*/

charzhi16K[]={

/*以下是'

直'

的16点阵楷体字模,32byte*/

0x01,0x00,0x01,0x00,0x01,0xF0,0x1E,0x00,

0x02,0x00,0x07,0xC0,0x08,0x40,0x0F,0x40,

0x08,0x40,0x0F,0x40,0x08,0x40,0x0F,0x40,

0x08,0x40,0x0F,0xFC,0x70,0x00,0x00,0x00,

};

charxian16K[]={

线'

0x00,0x80,0x00,0x90,0x08,0x88,0x10,0x80,

0x24,0xF0,0x45,0x80,0x78,0xB0,0x11,0xC0,

0x2C,0x88,0x70,0x50,0x04,0x60,0x18,0xA4,

0x63,0x14,0x00,0x0C,0x00,0x04,0x00,0x00,

charju16K[]={

矩'

0x00,0x00,0x08,0x00,0x08,0x78,0x10,0x80,

0x1E,0x80,0x28,0xF8,0x48,0x88,0x0E,0x88,

0xF8,0xF0,0x08,0x80,0x14,0x80,0x12,0x9E,

0x20,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,

charxing16K[]={

形'

0x00,0x00,0x07,0x88,0x3A,0x08,0x12,0x10,

0x12,0x20,0x17,0x48,0xFA,0x10,0x12,0x20,

0x12,0xC8,0x12,0x08,0x22,0x10,0x42,0x20,

0x00,0x40,0x00,0x80,0x03,0x00,0x00,0x00,

charyuan16K[]={

圆'

0x00,0xF8,0x3F,0x08,0x23,0x88,0x24,0x88,

0x27,0x08,0x21,0xC8,0x2E,0x48,0x29,0x48,

0x29,0x48,0x22,0x88,0x24,0x48,0x28,0x08,

0x3F,0xE8,0x00,0x10,0x00,0x00,0x00,0x00,

charqing16K[]={

清'

0x00,0x80,0x00,0xE0,0x33,0x80,0x10,0xE0,

0x03,0x80,0x40,0xFC,0x2F,0x00,0x01,0xE0,

0x12,0x20,0x13,0xA0,0x22,0x20,0x63,0xA0,

0x42,0x20,0x02,0x60,0x00,0x20,0x00,0x00,

charping16K[]={

屏'

0x00,0xF0,0x0F,0x30,0x08,0x60,0x0F,0x80,

0x0A,0x20,0x09,0x40,0x08,0xF8,0x17,0x20,

0x11,0x3E,0x2F,0xE0,0x21,0x20,0x42,0x20,

0x82,0x20,0x04,0x20,0x08,0x20,0x00,0x00,

charbao16K[]={

保'

0x00,0x00,0x09,0xF0,0x0A,0x10,0x12,0x10,

0x13,0xE0,0x30,0x80,0x50,0xFC,0x9F,0x80,

0x11,0xC0,0x12,0xA0,0x14,0x98,0x18,0x8E,

0x10,0x80,0x10,0x80,0x00,0x00,0x00,0x00,

charcun16K[]={

存'

0x02,0x70,0x05,0x90,0x08,0x20,0x08,0x40,

0x18,0x7E,0x2B,0xA0,0xC8,0x20,0x08,0x20,

0x08,0x20,0x08,0xA0,0x00,0x40,0x00,0x00,

charjia16K[]={

加'

0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,

0x0F,0x00,0x79,0x3C,0x09,0x44,0x11,0x44,

0x11,0x44,0x22,0x44,0x22,0x78,0x4A,0x00,

0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

charzai16K[]={

载'

0x00,0x80,0x08,0xA0,0x08,0x90,0x0E,0x80,

0x38,0xF0,0x0F,0x80,0x78,0x50,0x0E,0x50,

0x34,0x20,0x1E,0x20,0x34,0x50,0x0E,0x92,

0x75,0x0A,0x04,0x06,0x04,0x02,0x00,0x00,

charbang16K[]={

帮'

0x04,0x00,0x07,0x38,0x1C,0x48,0x06,0x50,

0x1C,0x50,0x07,0x48,0x78,0x58,0x11,0x40,

0x21,0xF0,0x4F,0x10,0x09,0x10,0x09,0x50,

0x09,0x20,0x01,0x00,0x01,0x00,0x00,0x00,

charzhu16K[]={

助'

0x00,0x00,0x00,0x20,0x0C,0x20,0x34,0x20,

0x24,0x20,0x34,0x38,0x25,0xC8,0x34,0x48,

0x24,0x48,0x26,0x88,0x38,0x88,0xE1,0x28,

0x02,0x10,0x04,0x00,0x00,0x00,0x00,0x00,

/*自定义函数*/

voidoutChinese(char*mat,intmatsize,intx,inty,intcolor);

voidfill(intstartx,intstarty,intendx,intendy,intcolor);

voidshowHelp();

voidsave();

voidload();

intmouseStatus(int*x,int*y);

intsetMousePos(intx,inty);

voidDrawMouse(floatx,floaty);

voidDrawLine();

voidDrawRectangle();

voidLineToCircle(intx0,inty0,intr);

voidDrawCircle();

longfactorial(intn);

floatberFunction(inti,intn,doublet);

voidDrawBezier();

/*根据点阵信息显示中文函数*/

voidoutChinese(char*mat,intmatsize,intx,inty,intcolor)

/*依次:

字模指针、点阵大小、起始坐标(x,y)、颜色*/

{

inti,j,k,n;

n=(matsize-1)/8+1;

for(j=0;

j<

matsize;

j++)

for(i=0;

i<

n;

i++)

for(k=0;

k<

8;

k++)

if(mat[j*n+i]&

(0x80>

>

k))

/*测试为1的位则显示*/

putpixel(x+i*8+k,y+j,color);

}

/*填充函数*/

voidfill(intstartx,intstarty,intendx,intendy,intcolor)

inti,j;

for(i=startx;

i<

=endx;

i++)

for(j=starty;

j<

=endy;

j++)

/*在指定位置以指定颜色画一像素*/

putpixel(i,j,color);

}

/*显示用户帮助函数*/

voidshowHelp()

setcolor(14);

outtextxy(45,50,"

Line:

"

);

setcolor(WHITE);

1Pressleftbuttontostartuntiltolineend."

outtextxy(45,65,"

2UseUP,DOWN,LEFT,RIGHTkeystomoveit."

outtextxy(45,80,"

3UsePAGEUPkeytoenlargeit,andPAGEDOWNkeytoshrinkit."

outtextxy(45,95,"

4UseSPACEkeytorotateit."

outtextxy(45,120,"

Rectangle:

1Pressleftbuttontostartuntiltorightcorner."

outtextxy(45,135,"

outtextxy(45,150,"

outtextxy(45,170,"

Circle:

1Pressleftbuttontostartuntiltoend."

outtextxy(45,185,"

2UsePAGEUPkeytoenlargeit,andPAGEDOWNkeytoshrinkit."

outtextxy(45,205,"

Bezier:

Pressleftbuttontostart,andrightbuttontoend."

outtextxy(45,230,"

PressESCkeytostoptheoperationfunction."

outtextxy(45,245,"

Pressrightbuttontoendthedrawingworks."

outtextxy(45,260,"

Pressanykeytocontinue......"

getch();

fill(40,40,625,270,0);

/*保存函数*/

voidsave()

FILE*fp;

charfileName[20];

fill(0,447,630,477,2);

gotoxy(1,25);

printf("

\n\n\n\nInputthefilename[.dat]:

scanf("

%s"

fileName);

/*以读写的方式打开文件*/

if((fp=fopen(fileName,"

w+"

))==NULL)

{

outtextxy(260,455,"

Failedtoopenfile!

exit(0);

}

outtextxy(280,455,"

saving..."

/*保存像素到文件*/

for(i=5;

630;

for(j=30;

=445;

fputc(getpixel(i,j),fp);

fclose(fp);

saveover!

/*打开函数*/

voidload()

{

/*打开指定的文件*/

r+"

))!

=NULL)

{

loading..."

/*从文件中读出像素*/

putpixel(i,j,fgetc(fp));

loadingover!

}

/*打开失败*/

else

/*获取鼠标状态函数*/

intmouseStatus(int*x,int*y)

/*定义两个寄存器变量,分别存储入口参数和出口参数*/

unionREGSinregs,outregs;

intstatus;

status=NO_PRESSED;

/*入口参数AH=3,读取鼠标位置及其按钮状态*/

;

int86(0x33,&

inregs,&

outregs);

/*CX表示水平位置,DX表示垂直位置*/

*x=;

*y=;

/*BX表示按键状态*/

if(

status=LEFT_PRESSED;

elseif(

status=RIGHT_PRESSED;

return(status);

/*设置鼠标指针位置函数*/

intsetMousePos(intx,inty)

/*入口参数AH=4,设置鼠标指针位置*/

/*绘制鼠标函数*/

voidDrawMouse(floatx,floaty)

line(x,y,x+5,y+15);

line(x,y,x+15,y+5);

line(x+5,y+15,x+15,y+5);

line(x+11,y+9,x+21,y+19);

line(x+9,y+11,x+19,y+21);

line(x+22,y+19,x+20,y+21);

/*绘制直线函数*/

voidDrawLine()

intx0,y0,x1,y1;

intlast_x=0,last_y=0;

intendFlag=0;

intkey;

inttemStartx,temStarty,temEndx,temEndy;

intincrement_x,increment_y,angle;

DrawMouse(last_x,last_y);

while

(1)

/*右键结束画直线*/

while((mouseStatus(&

x1,&

y1)==RIGHT_PRESSED))

endFlag=1;

if(endFlag==1)

break;

/*鼠标移动,没有单击,仅仅画移动的鼠标*/

while(mouseStatus(&

y1)==NO_PRESSED)

if(last_x!

=x1||last_y!

=y1)

DrawMouse(x1,y1);

last_x=x1;

last_y=y1;

/*单击左键后,开始画直线*/

if(mouseStatus(&

x0,&

y0)==LEFT_PRESSED)

line(x0,y0,x1,y1);

/*拉动过程中,画直线和鼠标*/

x1,&

y1)==LEFT_PRESSED)

line(x0,y0,last_x,last_y);

/*松开左键后,画直线完成,记录直线的起始位置*/

lineStartx=x0;

lineStarty=y0;

lineEndx=x1;

lineEndy=y1;

/*从键盘获取键值,开始操作(移动、放大、缩小、旋转)直线*/

key=bioskey(0);

/*ESC键,退出操作*/

if(key==ESC)

/*旋转*/

if(key==SPACE)

/*计算旋转中心*/

/*如果直线示倾斜的*/

if((lineStarty!

=lineEndy)&

&

(lineStartx!

=lineEndx))

Centx=(lineEndx-lineStartx)/2+lineStartx;

Centy=(lineEndy-lineStarty)/2+lineStarty;

/*如果直线是竖直的*/

if(lineStarty==lineEndy)

Centy=lineStarty;

/*如果直线是水平的*/

if(lineStartx==lineEndx)

Centx=lineStartx;

temStartx=lineStartx;

temStarty=lineStarty;

temEndx=lineEndx;

temEndy=lineEndy;

/*旋转不能超过边界*/

if(lineStartx>

=10&

lineStarty>

=40&

lineEndx<

=620&

lineEndy<

=445)

/*清除原有的直线*/

setwritemode(XOR_PUT);

line(lineStartx,lineStarty,lineEndx,lineEndy);

/*计算旋转30度后的起点坐标*/

lineStartx=(temStartx-Centx)*cos(pi/6)-(temStarty-Centy)*sin(pi/6)+Centx;

lineEndx=(temEndx-Centx)*cos(pi/6)-(temEndy-Centy)*sin(pi/6)+Centx;

/*计算旋转30度后的终点坐标*/

lineStarty=(temStartx-Centx)*sin(pi/6)+(temStarty-Centy)*cos(pi/6)+Centy;

lineEndy=(temEndx-Centx)*sin(pi/6)+(temEndy-Centy)*cos(pi/6)+Centy;

/*绘制旋转后的直线*/

line(lineStartx,lineStart

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2