实验一 种子填充算法.docVIP

  • 179
  • 0
  • 约8.19千字
  • 约 9页
  • 2017-01-09 发布于重庆
  • 举报
实验一 种子填充算法 实验目的: 掌握种子填充算法的思想,掌握队列的使用,掌握基于队列的四连通区域填充算法。 实验内容: 对于任意给定的多边形,在屏幕上显示该多边形,根据给定的多边形区域内种子,对多边形区域进行填充。多边形区域为四连通区域,要求采用链队存储种子点。 实验原理: 种子填充算法采用的边界定义是区域边界上所有像素均具有某个特定的颜色值,区域内部所有像素均不取这一特定颜色,而边界外的像素则可以具有和边界相同的颜色值。程序从(x,y)开始,先检测该点的颜色,如果它与边界色和填充色均不相同,就用填充色填充该点,然后检测相邻位置,以确定它们是否边界色和填充色,若不是,就填充该相邻点。这个过程延续到已经检测完边界范围内的所有像素为止。 实验步骤: 队列结构定义 种子堆栈的结构和队列结构,并定义相应变量。 确定多边形顶点坐标 在Initial函数中对顶点序列进行赋值。 生成多边形 即将由顶点序列所定义的多边形显示出来,也就实现了多边形的边界定义。 填充多边形区域 确定初始种子点 可以交互给出,例中直接给出。用指定的非填充颜色填充该像素,以标出初始种子点,同时将该点送入种子队列。 如果,种子队列非空,从队尾取出种子。 判断种子是否为边界色或填充色,如果不是填充该点,将该种子送入队列。 判断该点的四个相邻像素是否为边界色或填充色,如果不是,填充该像素,同时将该点送入种子队列。 重复步骤2),3),4) 实验效果: 程序实现: SeedFillView.h // SeedFillView.h : interface of the CSeedFillView class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_SEEDFILLVIEW_H__A4808C3F_AA5A_438B_93CD_5295DF06ABBD__INCLUDED_) #define AFX_SEEDFILLVIEW_H__A4808C3F_AA5A_438B_93CD_5295DF06ABBD__INCLUDED_ #if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000 typedef struct QNode{POINT Data; struct QNode *next;}; //链表结构 typedef struct LinkQueue{QNode *front; QNode *rear; }; //队列结构 class CSeedFillView : public CView { protected: // create from serialization only CSeedFillView(); DECLARE_DYNCREATE(CSeedFillView) // Attributes public: CSeedFillDoc* GetDocument(); // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CSeedFillView) public: virtual void OnDraw(CDC* pDC); // overridden to draw this view virtual BOOL PreCreateWindow(CREATESTRUCT cs); protected: virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); //}}AFX_VIRTUAL // Implementation public: void Initial( POINT *pts, int ptn); //对多边形顶点序列进行赋值 void EdgeMark(POINT v1, POINT v2, COLORREF bcolor); //绘制该多边形 void QSeedFill( int ptn, POINT *pts, POINT seed, COLORREF fcolor, COLORREF bcolor

文档评论(0)

1亿VIP精品文档

相关文档