生活随笔
收集整理的这篇文章主要介绍了
编写代码实现对多边形图案填充
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
编写代码实现对多边形图案填充
原理如下:
首先,用模板定义各种图案。然后,修改填充的扫描转换算法。在确定了区域内的一个像素后,不是马上往该像素填色而是先查询模板位图的对应位置。若是以透明方式填充图案,则当模板位图对应位置为1时,用前景色写像素;否则,不改变该像素的值。若是以不透明方式填充图案,则根据模板位图对应位置为1或0来决定是用前景色还是背景色去写像素。
#include<stdio.h>
#include<graphics.h>//图案模板
int select(int i,int j){int a,b;a=i%5;b=j%5;if(a==0&&b==0||a==1&&b==1||a==2&&b==2||a==3&&b==3||a==4&&b==4)return 1;else return 0;
}//选择填充
void full(int *p){int i,j,k,temp;if(p[0]==p[2]){temp=p[2];p[2]=p[6];p[6]=temp;temp=p[3];p[3]=p[7];p[7]=temp;}for(i=p[0];i<p[2];i=i++)for(j=p[1];j<p[7];j++){k=select(i,j);if(k==1)putpixel(i,j,WHITE);}
}//初始化,输入坐标
void init(int *p,int N){int j;printf("输入点的坐标:\n");printf("第1个坐标为:\n" );for(j=0;j<2*N;j++){scanf("%d",&p[j]);if(j%2==1)printf("第%d个坐标为:\n",(j+1)/2+1);}
}//主函数
int main(){int gd=DETECT,gmode;int p[10],N;printf("输入多边形的个数:\n");scanf("%d",&N);//int p[10]={100,100,200,100,200,200,100,200,100,100};init(p,N);initgraph(&gd,&gmode,"");drawpoly(5,p);full(p);getchar();getchar();closegraph();return 0;
}
若输入:
则输出:
总结
以上是生活随笔为你收集整理的编写代码实现对多边形图案填充的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。