资源简介
1. 完成坐标变换,将坐标原点移动到(400,300)处,并使X轴正方向水平向右,使Y轴正方向垂直向上(原来的坐标原点位于绘图区的左上角且Y轴正方向是朝下的);
2. 分别实现数值微分算法和Bresenham算法,不能使用系统API生成直线而只能使用SetPixel函数。
代码片段和文件信息
// Line.cpp: implementation of the Line class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “The2.h“
#include “Line.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Line::Line()
{
}
Line::~Line()
{
}
void Line::Bresenham(CDC *pDC) //Bresenham算法
{
int xyez;
dx=x2-x1dy=y2-y1e=-dxx=x1y=y1;
int ux = ((dx > 0) << 1) - 1;//x的增量方向,取或-1
int uy = ((dy > 0) << 1) - 1;//y的增量方向,取或-1
z = 0;dx = abs(dx); dy = abs(dy);
if (dx>dy)
{
for (x=x1;x!=x2;x+=ux)
{
pDC->SetPixel(xyCOLORREF(RGB(redgreenblue)));
z+=dy;
if((z<<1)>=dx)
{
y+=uy;z-=dx;
}
}
}
else
{
for(y=y1;y!=y2;y+=uy)
{
pDC->SetPixel(xyCOLORREF(RGB(redgreenblue)));
z+=dx;
if((z<<1)>=dy)
{
x+=ux;z-=dy;
}
}
}
}
void Line::DDA(CDC *pDC) //数值微分算法
{
int x;
float dxdyykab;
if(x2 a=x2;
x2=x1;
x1=a;
b=y2;
y2=y1;
y1=b;
}
dx=x2-x1dy=y2-y1;
k=dy/dxy=y1;
for(x=x1;x<=x2;x++){ // X每次加1,Y加K
pDC->SetPixel(xyCOLORREF(RGB(redgreenblue)));
y=y+k;
}
}
void Line::CS(CDC *pDC) //绘制坐标系
{
int i;
CString temp;
pDC->MoveTo(-4000); //画X轴
pDC->LineTo(5000);
pDC->MoveTo(0400); //画Y轴
pDC->LineTo(0-400);
pDC->MoveTo(-8292); //画小箭头
pDC->LineTo(0300);
pDC->LineTo(8292);
pDC->MoveTo(492-8);
pDC->LineTo(5000);
pDC->LineTo(4928);
for(i=-350;i<500;i=i+50) //画数字小标
{
temp.Format(“%d“i);
pDC->MoveTo(i0);
pDC->LineTo(i5);
pDC->TextOut(i-10-5temp);
}
for(i=-350;i<400;i=i+50){
temp.Format(“%d“i);
pDC->MoveTo(0i);
pDC->LineTo(5i);
if(i!=0){
pDC->TextOut(-30itemp);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8952 2013-10-15 23:44 The2\Debug\Line.obj
文件 0 2013-10-15 23:45 The2\Debug\Line.sbr
文件 11277 2013-10-15 23:17 The2\Debug\LineDlg.obj
文件 0 2013-10-15 23:17 The2\Debug\LineDlg.sbr
文件 20020 2013-10-15 20:35 The2\Debug\MainFrm.obj
文件 0 2013-10-15 20:35 The2\Debug\MainFrm.sbr
文件 105709 2013-10-15 20:35 The2\Debug\StdAfx.obj
文件 1374998 2013-10-15 20:35 The2\Debug\StdAfx.sbr
文件 3671040 2013-10-15 23:45 The2\Debug\The2.bsc
文件 122954 2013-10-15 23:45 The2\Debug\The2.exe
文件 335448 2013-10-15 23:45 The2\Debug\The2.ilk
文件 22954 2013-10-15 21:00 The2\Debug\The2.obj
文件 6881504 2013-10-15 20:35 The2\Debug\The2.pch
文件 476160 2013-10-15 23:45 The2\Debug\The2.pdb
文件 8004 2013-10-15 20:35 The2\Debug\The2.res
文件 0 2013-10-15 21:00 The2\Debug\The2.sbr
文件 14723 2013-10-15 20:35 The2\Debug\The2Doc.obj
文件 0 2013-10-15 20:35 The2\Debug\The2Doc.sbr
文件 24262 2013-10-15 23:27 The2\Debug\The2View.obj
文件 0 2013-10-15 23:27 The2\Debug\The2View.sbr
文件 222208 2013-10-15 23:45 The2\Debug\vc60.idb
文件 364544 2013-10-15 23:44 The2\Debug\vc60.pdb
文件 2118 2013-10-16 00:39 The2\Line.cpp
文件 655 2013-10-15 20:58 The2\Line.h
文件 1298 2013-10-15 23:17 The2\LineDlg.cpp
文件 1300 2013-10-15 21:00 The2\LineDlg.h
文件 2505 2013-10-02 10:57 The2\MainFrm.cpp
文件 1581 2013-10-02 10:57 The2\MainFrm.h
文件 4263 2013-10-02 10:57 The2\ReadMe.txt
文件 1078 2013-10-02 10:57 The2\res\The2.ico
............此处省略26个文件信息
相关资源
- 基于MFC的TCP调试助手源码95706
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
川公网安备 51152502000135号
评论
共有 条评论