收藏 分享(赏)

不透明方式填充.doc

上传人:HR专家 文档编号:5967331 上传时间:2019-03-22 格式:DOC 页数:2 大小:112.50KB
下载 相关 举报
不透明方式填充.doc_第1页
第1页 / 共2页
不透明方式填充.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、多边形区域填充图案(一)不透明方式填充1.1.1 实验目的通过本次实验,使学生掌握如何生成一个二值图案以及将 该图案填充到对多边形区域中去。并能够较熟练使用 VC 编程实现。 1.1.2 实验内容1)绘制一个多边形区域 2)生成一个二值图案。 2)将一个生成好的 图案填充到多边形区域中去。1.1.3 实验原理在进行图案填充时,必须要确定区域与 图案之间的位置关系。这可以通过把图案原点与图形区中的某一点对齐的办法实现。对齐方法一般有两种:1)将图案原点与区域边界或内部某一点对齐。2)将图案原点与填充区域外部的某一点对齐。假设图案是一个 MN 的位图,用一个二维数组存放。 int patternM

2、N;为讨论方便,设填充区域为矩形区域,其左下角点的坐标为(x0,y0)。由于 图案应比区域小得多,所以我 们总可以将其设计成周期性的出现。假 设当前扫描线与填充区域的相交区 间上一象素坐标为(x,y)。1)在第一种对齐方式下,我们 可以用如下代码实现:m=(x-x0)%N;n=(y-y0)%M;if(patternmn)=1)putpixel(x,y,color);2)在第二种对齐方式下,我们 可以用如下代码实现:m=x%N;n=y%M;if(patternmn)=1)putpixel(x,y,color);注:1)因为填充区域本身的复杂性,所以从算法的复 杂性方面看,第二种对齐方式比第一种对

3、齐方式要简单。2)第一种对齐方式填充的图案,当填充区域移 动时也会一道移 动,看起来很自然;而第二种对齐方式就没有这个优点。3)在对相邻区域用同一种图案进行填充时,用第二种 对齐 方式可以做到无缝连接的效果。而第一种对齐方式则没有 这样的优点。区域填充图案有透明方式和非透明方式两种。透明方式可用如下代码实现:m=x%N;n=y%M;if(patternmn)=1)putpixel(x,y,color);而非透明方式可用如下代码实现:m=x%N;n=y%M;if(patternmn)=1)putpixel(x,y,color);else putpixel(x,y,bkcolor);1.4.4 实

4、验主要步骤(假设工程名为 bitfill.dsw)1、 打开头文件 bitfillview.h,在 CbitfillView 类中添加成员 数组。2、 打开 bitfillview.cpp 文件,在构造函数 CbitfillView( )中对数组 a 进行初始化从而生成一个二值位图。3、 在成员函数 OnDraw( )中添加代码。 实现按某一种方式填充。1.4.5 主要代码:1、 在文件 bitfillView.cpp 中定义如下外部数组。int a88=0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,

5、0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0;2、 在成员函数 OnDraw( )中添加如下代码。int x,y,m,n;CPen p;p.CreatePen(PS_SOLID,2,RGB(100,100,100);CPen *poldpen=pDC-SelectObject(CBrush b;b.CreateSolidBrush(RGB(0,0,255);CBrush *poldbrush=pDC-SelectObject(pDC-Rectangle(100,100,300,300);pDC-Ellipse(150,150,350,350);for(y=101;ySetPixel(point,RGB(255,0,0);elsepDC-SetPixel(point,RGB(255,255,255);编译运行,结果如下。不透明方式填充

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报