资源简介
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编写DDA画直线和圆
- 大家来找茬源码(MFC)
- C++实现的基于内容的图像检索
- vc++ 文本编辑器仿记事本MFC版
- MFC实现可编辑Excel文件
- USB2.0接口数据采集卡
- 计算BMP24位真彩色图像PSNR的C++小程序
- 基于VC MFC的数据分析系统
- MFC DLL调用(包含调用和DLL自身源代码
- mfc 串行化的简单使用
- 公交车模拟
- VC读取shapefile文件源码,处理点线面
- MFC函数库手册
- Socket编写的一个基于MFC的聊天程序源
- mfc打开并显示BMP图片
- Programming Windows with MFC随书光盘源代码
- 能随鼠标移动的放大镜
- MultiThread(VS2013 MFC多线程-含源码-含个
- VC++6.0 MFC串口编程上位机程序代码.
- VC6中使用MFC自动化Excel数据写入和图表
- 超市库存管理系统的MFC实现
- 圆检测和方形检测图像处理
- MFC 下写的SVM类
- MFC+OpenGL三维建模与动画显示
- MFC基于对话框GDI+简单绘图
- MFC编程技巧与范例详解PDF(无水印 带
- 各种Kalman滤波的比较程序——C++/MFC版
- MFC vc++ 银行业务模拟系统
- mfc根据窗口大小自动调整所有控件大
- MFC 自定义位图按钮加文字
评论
共有 条评论