资源简介
计算机图形学 边填充算法实现代码,运用了MFC模块,使填充过程直观易学
代码片段和文件信息
#include
#include
#include
#include
#include
class HPoint
{
public:
HPoint(){x=y=0;}
void move(int mint n){x=m;y=n;}
int xy;
};
int inline Sign(int ff)
{
return (ff < 0) ? -1 : ((ff > 0) ? 1 : 0);
}
void inline Swap(int &xint &y)
{
int t;
t=x;
x=y;
y=t;
}
void Bresenham(HDC hdcint xsint ysint xeint ye)
{
int xysxsydif_xdif_y;
int FlagNError;
x=xs;
y=ys;
dif_x=abs(xe-xs);
dif_y=abs(ye-ys);
sx=Sign(xe-xs);
sy=Sign(ye-ys);
if(dif_y>dif_x)
{
Swap(dif_xdif_y);
Flag=1;
}
else
Flag=0;
NError=2*dif_y-dif_x;
for(int i=0;i<=dif_x;i++)
{
SetPixel(hdcxyRGB(02550));
if(NError>=0)
{
if(Flag)
x=x+sx;
else
y=y+sy;
NError=NError-2*dif_x;
}
if(Flag)
y=y+sy;
else
x=x+sx;
NError=NError+2*dif_y;
}
}
void Draw(HDC hdc)
{
HPoint *Point =new HPoint[5];
Point[0].move(300300);
Point[1].move(300400);
Point[2].move(400450);
Point[3].move(400200);
Point[4].move(350150);
int mnyminymax;
double ab;
double k;
for (int i=0;i<=4;i++) //对于所有边循环
{
m=in=i+1; //对点的循环
if(5==n) n=0;
k=(double (Point[m].x-Point[n].x))/(Point[m].y-Point[n].y);
if(Point[m].y {
ymin=Point[m].y;
ymax=Point[n].y;
a=Point[m].x;
}
else
{
ymin=Point[n].y;
ymax=Point[m].y;
a=Point[n].x;
}
for(b=ymin;b {
for(int j=a;j<400;j++) //对每一条扫描线与边的交点的右侧像素循环
{
if(GetPixel(hdcjb)==RGB(25500)) //如果像素的颜色是填充色
{
SetPixel(hdcjbRGB(255255255)); //改为背景色
}
else
SetPixel(hdcjbRGB(25500)); //改为填充色
}
a+=k; //计算下一个x起点值
}
}
}
LRESULT CALLBACK WndProc(HWND hwndUINT messageWPARAM wParamLPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance // handle to current instance
HINSTANCE hPrevInstance // handle to previous instance
LPSTR lpCmdLine // command line
int nCmdShow // show state
)
{
HWND hwnd; //窗口句柄
MSG Msg; //消息
WNDCLASS wndclass; //窗口类
char lpszClassName[]=“窗口“;
char lpsztitle[]=“My_Windows“;
//定义窗口类
wndclass.style=0;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULLIDI_APPLICATION);//加载窗口图标
wndclass.hCursor=LoadCursor(NULLIDC_ARROW);//加载窗口光标
wndclass.hbrBackground=(HBRUSH)GetStockobject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;
//注册窗口类
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FAL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7648 2009-04-28 21:40 biantianchong\Debug\BuildLog.htm
文件 65 2009-04-28 21:40 biantianchong\Debug\mt.dep
文件 148480 2009-04-22 23:24 biantianchong\Debug\vc60.idb
文件 77824 2009-04-22 23:24 biantianchong\Debug\vc60.pdb
文件 338944 2009-04-28 21:40 biantianchong\Debug\vc90.idb
文件 110592 2009-04-28 21:40 biantianchong\Debug\vc90.pdb
文件 35369 2009-04-28 21:40 biantianchong\Debug\边.obj
文件 361984 2009-04-28 21:40 biantianchong\Debug\边填充.exe
文件 406 2009-04-28 20:34 biantianchong\Debug\边填充.exe.em
文件 472 2009-04-28 20:34 biantianchong\Debug\边填充.exe.em
文件 381 2009-04-28 21:40 biantianchong\Debug\边填充.exe.intermediate.manifest
文件 244296 2009-04-28 21:40 biantianchong\Debug\边填充.ilk
文件 1969152 2009-04-28 21:40 biantianchong\Debug\边填充.pdb
文件 4977 2009-04-28 21:40 biantianchong\边.cpp
文件 3916 2009-04-22 22:29 biantianchong\边填充.dsp
文件 537 2009-04-22 21:57 biantianchong\边填充.dsw
文件 13495296 2009-04-28 21:40 biantianchong\边填充.ncb
文件 48640 2009-04-22 23:24 biantianchong\边填充.opt
文件 742 2009-04-22 23:24 biantianchong\边填充.plg
文件 883 2009-04-28 21:38 biantianchong\边填充.sln
..A..H. 7680 2009-04-28 21:40 biantianchong\边填充.suo
文件 5421 2009-04-28 20:34 biantianchong\边填充.vcproj
文件 1407 2009-04-28 21:40 biantianchong\边填充.vcproj.hp-PC.hp.user
目录 0 2010-02-20 20:06 biantianchong\Debug
目录 0 2010-02-20 20:06 biantianchong
----------- --------- ---------- ----- ----
16865112 25
- 上一篇:电力系统潮流计算程序集合
- 下一篇:高等代数总结(84页)
相关资源
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
- 联想启天M4350 BIOS升级文件
- 操作系统教程课后答案华中科技大学
- 用友ERP考试系统练习题库及答案
- 北京邮电大学数据结构历年考研真题
- 真正!!!概率论与数理统计浙江大
- TMS320VC5509A_开发板使用手册
- hxdef100源码、远控、后门
- CentOS-6.7-x86_64-bin-DVD1to2
- 点阵字库显示中英文
- caxa实体设计2019破解补丁
- Dibrugarh地区牛场土壤中潜在的益生菌
评论
共有 条评论