图形填充算法(扫描线种子填充算法)

本文介绍了图形填充算法的一种实现——扫描线种子填充算法。作者提供了C语言代码,包括初始化扫描线、根据种子填充行以及整体填充等功能。代码中使用了一个点结构的堆栈,并包含图形模式的初始化程序。
摘要由CSDN通过智能技术生成

好多天没去上图形学的课了,今天听说要交几个图形学的算法实现程序,就花了将近一天的时间终于将程序调试通过了,可是到了实验室,才知道老师根本没时间检查。哎,白写了^_^.说笑了,其实不写怎么能真正理解算法的真谛呢。现在将程序贴出来,以备将来有学弟学妹之用。(其实如果只是Copy来的程序,对自己真是没什么用,除了有时能瞒过老师,也许对成绩有帮助。仅此而已。)

/**
* 作者:老谢
* 最后修改日期:2006.4.14
* Email:do_while@sohu.com
* 功能描述:
* 图形填充算法之
* 扫描线种子填充算法;
**/
/**
* 该程序还需要一个存储 Point (点)结构的一个堆栈
* 和图形模式的初始化程序
* 这两个程序的实现程序在后面
**/

/*linescan.c*/

#include "graphics.h"
#include "dos.h"
#include "stdio.h"
#include "PStack.h"

/**
* 初始化扫描线
* (x,y)必须在图形的内部
**/
void initScan(PointStack *s,int x,int y)
{
 Point p;

 p.X = x;
 p.Y = y;

 push(s,p);

 delay(4000);
}

/**
* 根据种子填充这一行,并且找到上下两行的种子,入栈
**/
void fillThisLine(PointStack *s,Point seed,color fillColor,color borderColor)
{
 int curx = seed.X;
 int cury = seed.Y;

 int xr = 0;
 int xl = 0;

 int tag = 0; /*分别为区段的左右坐标值*/
 Point point;

 curx = seed.X;

 /**
 * 不是边界 也没有填充过,一直向右走
 **/
 while(getpixel(curx,cury) != borderColor &&
  getpixel(curx,cury) != fillColor)
 {
  if(curx > 600)
  {
   pr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值