欢迎来到天天文库
浏览记录
ID:12450082
大小:369.50 KB
页数:13页
时间:2018-07-17
《多边形有效边表填充算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多边形有效边表填充算法案例效果如下:具体实现:(1)新建MFC项目:(2)分别添加类:AET和Bucket在AET.h中定义#pragmaonceclassAET{public:AET(void);~AET(void);doublex;intyMax;doublek;AET*next;};在Bucket.h中定义#pragmaonce#include"AET.h"classBucket{public:Bucket(void);~Bucket(void);intScanline;AET*p;Bucket*next;};(3)定义菜单(4)添加菜单处理程序(5)定义视图头文件//scanfi
2、llView.h:CscanfillView类的接口//#pragmaonce#include"AET.h"#include"Bucket.h"#defineNumber7classCscanfillView:publicCView{protected://仅从序列化创建CscanfillView();DECLARE_DYNCREATE(CscanfillView)//属性public:CscanfillDoc*GetDocument()const;//操作public:voidPolygonFill();//上闭下开填充多边形voidCreatBucket();//建立桶节点voidE
3、t();//构造边表voidAddEdge(AET*);//将边插入AET表voidEdgeOrder();//对AET表进行排序//重写public:virtualvoidOnDraw(CDC*pDC);//重写以绘制该视图virtualBOOLPreCreateWindow(CREATESTRUCT&cs);protected:virtualBOOLOnPreparePrinting(CPrintInfo*pInfo);virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);virtualvoidOnEndPrinting(CDC*p
4、DC,CPrintInfo*pInfo);//实现public:virtual~CscanfillView();#ifdef_DEBUGvirtualvoidAssertValid()const;virtualvoidDump(CDumpContext&dc)const;#endifprotected:COLORREFGetColor;//调色板CPointPoint[7];//定义多边形Bucket*HeadB,*CurrentB;//桶的头结点和当前节点AETE[Number],*HeadE,*CurrentE,*T1,*T2;//有效边表的节点//生成的消息映射函数protecte
5、d:DECLARE_MESSAGE_MAP()public:afx_msgvoidOnMenuAET();};#ifndef_DEBUG//scanfillView.cpp中的调试版本inlineCscanfillDoc*CscanfillView::GetDocument()const{returnreinterpret_cast(m_pDocument);}#endif(6)实现视图//scanfillView.cpp:CscanfillView类的实现//#include"stdafx.h"#include"scanfill.h"#include"sc
6、anfillDoc.h"#include"scanfillView.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif#defineROUND(a)int(a+0.5)//定义四舍五入//CscanfillViewIMPLEMENT_DYNCREATE(CscanfillView,CView)BEGIN_MESSAGE_MAP(CscanfillView,CView)//标准打印命令ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,&CView::OnFil
7、ePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW,&CView::OnFilePrintPreview)ON_COMMAND(ID_MenuAET,&CscanfillView::OnMenuAET)END_MESSAGE_MAP()//CscanfillView构造/析构CscanfillView::CscanfillView(){//TODO:在此处添加构造代码//设置多边形的个顶点Point[0]
此文档下载收益归作者所有