C语言的图形函数库贴吧,自己写的一个图形库,有点问题.来请教大家了
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#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语言的图形函数库贴吧,自己写的一个图形库,有点问题.来请教大家了相关推荐
- c语言图形库怎样画一条弧线,自己写的一个图形库,有点问题.来请教大家了
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "stdio.h" #include "dos.h" #include "math.h ...
- C语言中图形函数及其用法
C语言中图形函数及其用法 Turbo C 2.0具有丰富的图形功能,它提供了70多个图形函数.在这里只介绍最常用的一部分,其余的图形函数及用法可参阅相关书籍.图形函数均在头文件"graph ...
- C语言字符串处理函数库
C语言的字符串处理函数库包括复制函数.拼接函数.比较函数.搜索函数等,这些函数的声明都位于头文件<string.h>.使用这些函数时,需要使用#include<string.h> ...
- python函数的组成要素_写好一个Python函数的六要素
Python 虽然好用,但用好真的很难.尤其是函数部分,只要写不好,后面的一连串人都会遭殃.看又看不懂,测试起来也麻烦,维护又维护不动,真是让人头疼. 那怎么写好一个 Python 函数呢?<W ...
- c语言图形函数linerel,C语言图形函数库总结graphics.h
囊括了graphics.h库的主要用法及说明 C语言图形.图像函数库graphics.h.txt C语言图形.图像函数库graphics.h (一) 像素函数 56. putpiel() 画像素点函数 ...
- c语言图片处理函数库,C语言图形开发库函数graphics.doc
C语言图形开发库函数graphics 函数名: fillellipse功? 能: 画出并填充一椭圆用? 法: void far fillellipse int x, int y, int xradiu ...
- c语言数学函数编程,C语言基础-数学函数库
以下的函数 参数都是double类型,实际上函数库中还有与long double,float类型相关的函数,但都只是以下函数的函数名变化 一些数学计算的公式的具体实现是放在math.h里,具体有: 1 ...
- C++函数库的理解:写一个C++程序库(排序库)然后调用自己写的库(附带程序)
1.自己写一个库:和建工程是一样的,但是建的项目是DLL文件,然后再其工程下添加源文件和头文件,源文件正常写,头文件是有要求的,__declspec(dllexport)的加入,程序在下面是给出的,所 ...
- 多重选择函数c语言,大佬在吗,我用C写了一个去多重括号的函数,结果。。。...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include "malloc.h" char * changeOrder(char *s); ...
最新文章
- yum源及yum仓库服务搭建讲解
- 荔枝FM 字体文件 IconFontTextView
- python的工资为什么这么低-你拿着3k的工资,不明白为什么别人年薪 200万
- 数字图像处理——第四章 频率域图像增强
- docker常用命令,安装常用实例,一步式安装mysql
- 前端html5CSS3颜色表示法
- activiti 视图
- python series用法_如何使用Python中的Series字典创建数据框?
- python 3.8.0安卓_Python 3.8.0稳定版正式发布
- 为DataList和GridView内容项添加序号
- 字符串随机生成工具类
- 07-OSPF区域类型--NSSA区域/完全NSSA区域
- 谷歌等质问IETF:IPv6的用户在哪里?
- NSNumber的使用
- app 之间发送文件 ios
- 【深度优先搜索】记忆化搜索 P1077 摆花
- 【PAT乙】1033 旧键盘打字 (20分) 字符串
- 从D语言看C++ Template语法
- 【指纹识别】基于模板匹配算法指纹识别匹配门禁系统matlab源码
- re:从零开始的Qt世界冒险生活
热门文章
- kettle中止是怎么用的_抖音dou+怎么投?抖加怎么投有效?这样投性价比最高
- sparkstreaming自定义kafka
- Linux进程最大socket数,Linux下高并发socket最大连接数所受的各种限制(详解)
- linux php 语法加亮,用js函数PHP语法加亮
- 假设以带头结点的循环链表表示队列_真香!20张图揭开「队列」的迷雾,一目了然...
- 数据挖掘:模型选择——逻辑回归
- codeforces 792CDivide by Three(两种方法:模拟、动态规划
- Linux虚拟机之间实现密钥登陆
- 大白书中无向图的点双联通分量(BCC)模板的分析与理解
- HTTP状态代码列表