资源简介
使用MFC绘制的反走样直线源程序,直接运行即可看到效果。这是vs2010版程序。参考教材是孔令德编写的《计算机图形学实践教程(Visual C++版)第2版》。

代码片段和文件信息
// ALine.cpp: implementation of the CALine class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “Test.h“
#include “ALine.h“
#include “math.h“
#define Round(d) int(floor(d+0.5))//四舍五入宏定义
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CALine::CALine()
{
}
CALine::~CALine()
{
}
void CALine::MoveTo(CDC *pDCCP2 p0)
{
P0=p0;
}
void CALine::MoveTo(CDC *pDCdouble xdouble y)//重载函数
{
MoveTo(pDCCP2(xyCRGB(0.00.00.0)));
}
void CALine::MoveTo(CDC *pDCdouble xdouble yCRGB c)
{
MoveTo(pDCCP2(xyc));
}
void CALine::LineTo(CDC *pDCCP2 p1)
{
P1=p1;
CP2 pt;
CRGB c0c1;
if(fabs(P0.x-P1.x)==0) //绘制垂线
{
if(P0.y>P1.y) //交换顶点使得起始点低于终点顶点
{
t=P0;P0=P1;P1=t;
}
for(p=P0;p.y {
pDC->SetPixelV(Round(p.x)Round(p.y)RGB(p.c.red*255p.c.green*255p.c.blue*255));
}
}
else
{
double ke=0;
k=(P1.y-P0.y)/(P1.x-P0.x);
if(k>1.0) //绘制k>1
{
if(P0.y>P1.y)
{
t=P0;P0=P1;P1=t;
}
for(p=P0;p.y {
c0=CRGB(eee);
c1=CRGB(1.0-e1.0-e1.0-e);
pDC->SetPixelV(Round(p.x)Round(p.y)RGB(c0.red*255c0.green*255c0.blue*255));
pDC->SetPixelV(Round(p.x+1)Round(p.y)RGB(c1.red*255c1.green*255c1.blue*255));
e=e+1/k;
if(e>=1.0)
{
p.x++;
e--;
}
}
}
if(0.0<=k && k<=1.0) //绘制0≤k≤1
{
if(P0.x>P1.x)
{
t=P0;P0=P1;P1=t;
}
for(p=P0;p.x {
c0=CRGB(eee);
c1=CRGB(1.0-e1.0-e1.0-e);
pDC->SetPixelV(Round(p.x)Round(p.y)RGB(c0.red*255c0.green*255c0.blue*255));
pDC->SetPixelV(Round(p.x)Round(p.y+1)RGB(c1.red*255c1.green*255c1.blue*255));
e=e+k;
if(e>=1.0)
{
p.y++;
e--;
}
}
}
if(k>=-1.0 && k<0.0) //绘制-1≤k<0
{
if(P0.x>P1.x)
{
t=P0;P0=P1;P1=t;
}
for(p=P0;p.x {
c0=CRGB(eee);
c1=CRGB(1.0-e1.0-e1.0-e);
pDC->SetPixelV(Round(p.x)Round(p.y)RGB(c0.red*255c0.green*255c0.blue*255));
pDC->SetPixelV(Round(p.x)Round(p.y-1)RGB(c1.red*255c1.green*255c1.blue*255));
e=e-k;
if(e>=1.0)
{
p.y--;
e--;
}
}
}
if(k<-1.0) //绘制k<-1
{
if(P0.y {
t=P0;P0=P1;P1=t;
}
for(p=P0;p.y>P1.y;p.y--)
{
c0=CRGB(eee);
c1=CRGB(1.0-e1.0-e1.0-e);
pDC->SetPixelV(Round(p.x)Round(p.y)RGB(c0.red*255c0.green*255c0.blue*255));
pDC->SetPixelV(Round(p.x+1)Round(p.y)RGB(c1.red*255c1.green*255c1.blue*255));
e=e-1/k;
if(e>=1.0)
{
p.x++;
e--;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3288 2014-11-15 11:28 案例5-直线反走样Wu算法\Test\ALine.cpp
文件 781 2014-11-19 08:13 案例5-直线反走样Wu算法\Test\ALine.h
文件 1769 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\MainFrm.cpp
文件 669 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\MainFrm.h
文件 669 2010-12-06 10:07 案例5-直线反走样Wu算法\Test\P2.cpp
文件 571 2010-02-11 21:05 案例5-直线反走样Wu算法\Test\P2.h
文件 3605 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\ReadMe.txt
文件 68576 2014-11-22 13:46 案例5-直线反走样Wu算法\Test\res\about.bmp
文件 10134 2006-11-22 11:29 案例5-直线反走样Wu算法\Test\res\app.ico
文件 766 2014-11-22 13:46 案例5-直线反走样Wu算法\Test\res\draw.ico
文件 4710 2014-11-22 13:46 案例5-直线反走样Wu算法\Test\res\exit.ico
文件 3638 2014-11-22 13:46 案例5-直线反走样Wu算法\Test\res\Help.ico
文件 1078 2006-11-22 11:32 案例5-直线反走样Wu算法\Test\res\Test.ico
文件 664 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\res\Test.rc2
文件 4710 2009-08-31 02:31 案例5-直线反走样Wu算法\Test\res\TestDoc.ico
文件 1654 2014-11-22 13:46 案例5-直线反走样Wu算法\Test\res\Toolbar.bmp
文件 2270 2014-11-22 13:47 案例5-直线反走样Wu算法\Test\resource.h
文件 2412 2011-09-23 23:55 案例5-直线反走样Wu算法\Test\RGB.cpp
文件 1098 2004-02-20 21:51 案例5-直线反走样Wu算法\Test\RGB.h
文件 137 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\stdafx.cpp
文件 1632 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\stdafx.h
文件 234 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\targetver.h
文件 113248 2014-11-22 13:57 案例5-直线反走样Wu算法\Test\Test.aps
文件 4299 2014-11-22 14:10 案例5-直线反走样Wu算法\Test\Test.cpp
文件 486 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\Test.h
文件 20364 2014-11-22 13:52 案例5-直线反走样Wu算法\Test\Test.rc
文件 6501 2014-11-22 14:11 案例5-直线反走样Wu算法\Test\Test.vcxproj
文件 3364 2014-11-22 14:11 案例5-直线反走样Wu算法\Test\Test.vcxproj.filters
文件 143 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\Test.vcxproj.user
文件 2464 2014-11-22 13:38 案例5-直线反走样Wu算法\Test\TestDoc.cpp
............此处省略11个文件信息
- 上一篇:变压器故障诊断 国标改良三比值法
- 下一篇:行李寄存管理软件绿色版.
相关资源
- 单片机c语言源程序(51定时器 八个按
- 交互式计算机图形学 第六版 OpenGL源代
- 图形学简单绘图系统
- aes加解密(vc源程序)
- c++ 求两个数的和
- VC++ 摄像头视频采集与回放源程序
- Visual_C++_数据采集与串口通信测控应用
- FFT(快速傅里叶变换)C++源程序
- 基于51单片机射频RFID卡考勤上课上班
- 若干源程序资料12.rar
- 坦克大战90源程序代码 精确到象素级
- OpenGL迷宫山东大学图形学实验三
- VC6.0经典串口通信源程序C++
- Windows+C语言构建网络聊天室内含源程
- 求解VRP问题的C++源程序
- 虹膜识别VC++源程序
- 基于C++和数据库SQL server开发的商品销
- 计算机图形学走样反走样时钟
- c++QT5图形学-中点画圆完整工程文件
- 西北工业大学软件学院计算机图形学
- 计算机图形学实验源代码中南民族大
- VC++记事本完整源程序
- C++ GUI PROGRAMMING WITH QT4 +原版书及源程
- VC++6.0 MFC 基于对话框编写的扫雷源程
- 图形学各种曲线--Bezier曲线,B-样条曲
- 鼠标交互画圆及椭圆基于Bresenham、中
- 绘制任意斜率的直线段
- QSplat:基于点绘制的图形学开山之作
- 计算机图形学简单CAD系统
- 真实感图形学
评论
共有 条评论