该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include "stdio.h"

#include "dos.h"

#include "math.h"

#define VGA256 0x13

#define TEXT 0x03

#define PI 3.14159

#define MAXWIDTH 320

#define MAXHEIGHT 200

/*************Set_Video_Mode************/

void setvideomode(int mode)

{

union REGS inregs,outregs;

inregs.h.ah=0;

inregs.h.al=(unsigned char)mode;

int86(0x10,&inregs,&outregs);

}

/******printdot 打印点******/

printdot(int x,int y,unsigned char color)

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

if(x

viewstart[y*MAXWIDTH+x]=color;

}

/******getdot 读取点******/

unsigned char getdot(int x,int y)

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

return  (unsigned char)viewstart[y*MAXWIDTH+x];

}

/******clearscreen 清屏******/

clearscreen(unsigned char color)

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

unsigned int i,j;

for(i=0;i

for(j=0;j

viewstart[MAXWIDTH*j+i]=color;

}

/******clearzone 清除区域******/

clearzone(int x1,int y1,int x2,int y2,unsigned char color)

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

int i,j,t;

for(i=x1;i<=x2;i++)

for(j=y1;j<=y2;j++)

viewstart[j*MAXWIDTH+i]=color;

}

/*******printline 打印直线*******/

printline(int x1,int y1,int x2,int y2,unsigned char color)

{

int i,j,dx,dy,x,y,a=0;

int incx,incy;

x=x1;y=y1;

dx=x2-x1;

if(dx>0)

incx=1;

else

{ dx=-dx;    incx=-1;    }

dy=y2-y1;

if(dy>0)

incy=1;

else

{  dy=-dy;    incy=-1;    }

printdot(x1,y1,color);   /*在线的第一个位置上画点*/

printdot(x2,y2,color);   /*在线的最后

一个位置上画点*/

if(dx>dy) /*趋近于横线*/

{

for(i=0;i

{

printdot(x,y,color);

x=x+incx;

a=a+dy;

if(a>dx)

{

a=a-dx;

y=y+incy;

}

}

}

else  /*趋近于竖线*/

{

for(i=0;i

{

printdot(x,y,color);

y=y+incy;

a=a+dx;

if(a>dy)

{

a=a-dy;

x=x+incx;

}

}

}

}

/*********Printrectangle 打印矩形************/

printrectangle(int x1,int y1,int x2,int y2,int color)

{

printline(x1,y1,x1,y2,color);

printline(x1,y1,x2,y1,color);

printline(x2,y2,x1,y2,color);

printline(x2,y2,x2,y1,color);

}

/*******  printCircle 打印圆******/

printcircle(int x,int y,int r,unsigned char color,int n)

{

/*r为半径

n为圆分成多少分*/

int i;

float incr;

int x1,x2,y1,y2;

x1=x2=x+r; /*初始点*/

y1=y2=y;

incr=PI/n*2;

for(i=1;i<=n;i++)

{

x2=x+cos(

i*incr)*r;

y2=y+sin(i*incr)*r;

printline(x1,y1,x2,y2,color);

x1=x2;

y1=y2;

}

printline(x1,y1,x+r,y,color);

}

/******printellipse打印椭圆************/

printellipse(int x,int y,int R,int r,unsigned char color,int n)

{

/*r为半径

n为随圆分成多少分*/

int i;

float incr;

int x1,x2,y1,y2;

x1=x2=x+R; /*初始点*/

y1=y2=y;

incr=PI/n*2;

for(i=1;i<=n;i++)

{

x2=x+cos(i*incr)*R;

y2=y+sin(i*incr)*r;

printline(x1,y1,x2,y2,color);

x1=x2;

y1=y2;

}

printline(x1,y1,x+R,y,color);

}

/***************fillzone 填充区域***************/

fillzone(int x,int y,unsigned char color,unsigned char ordercolor)

{

if(x=0&&y>=0) /*范围检测*/

{  printdot(x,y,color);

delay(1000);

if((getdot(x-1,y)!=ordercolor)&&(getdot(x-1,y)!=color)) fillzone(x-1,y,color,ordercolor);

if((getdot(x+1,y)!=ordercolor)&&(getdot(x+1,y)!=color)) fillzone(x+1,y,color,ordercolor);/*将这一行删除,就不会出界,但只有一半*/

if((getdot(x,y-1)!=ordercolor)&&(getdot(x,y-1)!=color)) fillzone(x,y-1,color,ordercolor);

if((getdot(x,y+1)!=ordercolor)&&(getdot(x,y+1)!=color)) fillzone(x,y+1,color,ordercolor);

}

}

/***********saveimage 保存区域**************/

saveimage(int x,int y,int width,int height,char *buffer) /*这个函数也似乎有问题*/

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

int i,j;

unsigned int p=0;

for(i=0;i

for(j=0;j

{ buffer[p]=(unsigned char)viewstart[(y+i)*MAXWIDTH+j+x]; p++;}

}

/***********printimage 打印区域**************/

printimage(int x,int y,int width,int height,char *buffer)/*这个函数也似乎有问题*/

{

unsigned char far *viewstart=(unsigned char far *)0xA0000000L;

int i,j;

unsigned int p=0;

for(i=0;i

for(j=0;j

{ viewstart[(y+i)*MAXWIDTH+j+x]=(unsigned char)buffer[p]; p++;}

}

/**********Main***********/

main()

{

int i,j;

setvideomode(VGA256);

printellipse(100,100,100,50,45,22);

printcircle(100,100,100,10,22);

printrectangle(10,10,200,80,2);

getch();

fillzone(100,55,5,2); /*有问题*/

getch();

setvideomode(TEXT);

}

C语言的图形函数库贴吧,自己写的一个图形库,有点问题.来请教大家了相关推荐

  1. c语言图形库怎样画一条弧线,自己写的一个图形库,有点问题.来请教大家了

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "stdio.h" #include "dos.h" #include "math.h ...

  2. C语言中图形函数及其用法

    C语言中图形函数及其用法  Turbo C 2.0具有丰富的图形功能,它提供了70多个图形函数.在这里只介绍最常用的一部分,其余的图形函数及用法可参阅相关书籍.图形函数均在头文件"graph ...

  3. C语言字符串处理函数库

    C语言的字符串处理函数库包括复制函数.拼接函数.比较函数.搜索函数等,这些函数的声明都位于头文件<string.h>.使用这些函数时,需要使用#include<string.h> ...

  4. python函数的组成要素_写好一个Python函数的六要素

    Python 虽然好用,但用好真的很难.尤其是函数部分,只要写不好,后面的一连串人都会遭殃.看又看不懂,测试起来也麻烦,维护又维护不动,真是让人头疼. 那怎么写好一个 Python 函数呢?<W ...

  5. c语言图形函数linerel,C语言图形函数库总结graphics.h

    囊括了graphics.h库的主要用法及说明 C语言图形.图像函数库graphics.h.txt C语言图形.图像函数库graphics.h (一) 像素函数 56. putpiel() 画像素点函数 ...

  6. c语言图片处理函数库,C语言图形开发库函数graphics.doc

    C语言图形开发库函数graphics 函数名: fillellipse功? 能: 画出并填充一椭圆用? 法: void far fillellipse int x, int y, int xradiu ...

  7. c语言数学函数编程,C语言基础-数学函数库

    以下的函数 参数都是double类型,实际上函数库中还有与long double,float类型相关的函数,但都只是以下函数的函数名变化 一些数学计算的公式的具体实现是放在math.h里,具体有: 1 ...

  8. C++函数库的理解:写一个C++程序库(排序库)然后调用自己写的库(附带程序)

    1.自己写一个库:和建工程是一样的,但是建的项目是DLL文件,然后再其工程下添加源文件和头文件,源文件正常写,头文件是有要求的,__declspec(dllexport)的加入,程序在下面是给出的,所 ...

  9. 多重选择函数c语言,大佬在吗,我用C写了一个去多重括号的函数,结果。。。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include "malloc.h" char * changeOrder(char *s); ...

最新文章

  1. yum源及yum仓库服务搭建讲解
  2. 荔枝FM 字体文件 IconFontTextView
  3. python的工资为什么这么低-你拿着3k的工资,不明白为什么别人年薪 200万
  4. 数字图像处理——第四章 频率域图像增强
  5. docker常用命令,安装常用实例,一步式安装mysql
  6. 前端html5CSS3颜色表示法
  7. activiti 视图
  8. python series用法_如何使用Python中的Series字典创建数据框?
  9. python 3.8.0安卓_Python 3.8.0稳定版正式发布
  10. 为DataList和GridView内容项添加序号
  11. 字符串随机生成工具类
  12. 07-OSPF区域类型--NSSA区域/完全NSSA区域
  13. 谷歌等质问IETF:IPv6的用户在哪里?
  14. NSNumber的使用
  15. app 之间发送文件 ios
  16. 【深度优先搜索】记忆化搜索 P1077 摆花
  17. 【PAT乙】1033 旧键盘打字 (20分) 字符串
  18. 从D语言看C++ Template语法
  19. 【指纹识别】基于模板匹配算法指纹识别匹配门禁系统matlab源码
  20. re:从零开始的Qt世界冒险生活

热门文章

  1. kettle中止是怎么用的_抖音dou+怎么投?抖加怎么投有效?这样投性价比最高
  2. sparkstreaming自定义kafka
  3. Linux进程最大socket数,Linux下高并发socket最大连接数所受的各种限制(详解)
  4. linux php 语法加亮,用js函数PHP语法加亮
  5. 假设以带头结点的循环链表表示队列_真香!20张图揭开「队列」的迷雾,一目了然...
  6. 数据挖掘:模型选择——逻辑回归
  7. codeforces 792CDivide by Three(两种方法:模拟、动态规划
  8. Linux虚拟机之间实现密钥登陆
  9. 大白书中无向图的点双联通分量(BCC)模板的分析与理解
  10. HTTP状态代码列表