问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

利用C语言编写 能够画出任意斜率的直线算法程序(利用中点画线法...

发布网友 发布时间:2024-02-15 20:15

我来回答

1个回答

热心网友 时间:2024-07-19 01:30

将DDA算法改成中点划线算法即可
// DDA画线View.cpp : implementation of the CDDAView class
//

#include "stdafx.h"
#include "DDA画线.h"

#include "DDA画线Doc.h"
#include "DDA画线View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDDAView

IMPLEMENT_DYNCREATE(CDDAView, CView)

BEGIN_MESSAGE_MAP(CDDAView, CView)
//{{AFX_MSG_MAP(CDDAView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDDAView construction/destruction

CDDAView::CDDAView()
{
// TODO: add construction code here

}

CDDAView::~CDDAView()
{
}

BOOL CDDAView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs

return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CDDAView drawing

void CDDAView::OnDraw(CDC* pDC)
{
CDDADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int xx,yy,x2,y2,m,n;
float dx,dy,k,x,y;
int x0=50,y0=500,x1=50,y1=50;
if(x0>x1)
{
m=x0;x0=x1;x1=m;
m=y0;y0=y1;y1=m;
}
dx=x1-x0;
dy=y1-y0;
k=dy/dx;
if(x0==x1)
{
if(y0>y1)
{
n=y0;
y0=y1;
y1=n;
}
for(y2=y0;y2<=y1;)
{
for(n=-10;n<11;)
{
pDC->SetPixel(x0+n,y2,255);
n++;
}
y2=y2+3;
}

}
if(k>=-1&&k<=1.0)
{
y=y0;
for(x2=x0;x2<=x1;)
{
yy=(int)(y+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(x2,yy+n,255);
n++;
}
y=y+k;
x2++;
}
}
else if(k>1)
{
x=x0;
k=dx/dy;
for(y2=y0;y2<=y1;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}
}
else if(k<-1)
{
x=x1;
k=dx/dy;
for(y2=y1;y2<=y0;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}

}
// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CDDAView printing

BOOL CDDAView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}

void CDDAView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}

void CDDAView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CDDAView diagnostics

#ifdef _DEBUG
void CDDAView::AssertValid() const
{
CView::AssertValid();
}

void CDDAView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}

CDDADoc* CDDAView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDDADoc)));
return (CDDADoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDDAView message handlers
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在筋骨堂治疗腰椎间盘突出一个疗程后已有好转,隔了三、四天又疼上了... 美的3⃣️匹柜机空调为什么不制热是什么原因? 小票打印机不出字的原因及解决方法如何解决小票打印机无法打印字的问题... 电脑打单打印机出不了小票超市收银台电脑键盘怎么用 交易房屋如何分类 城市规划用途分类该怎么做 规划用途的分类 ...打火机散件设备公司 值得信赖么 ?是不是《骗子》皮包公司? 希望给予... 哈尔滨农垦太阳神打火机散件厂是否骗人 有没有人知道网上那些打火机加工的广告是不是真是可靠?做打火机反销... k方大于一怎么解 k大于1则y等于kx不过第几像限 农村土地承包经营权流转的主体是()。 土地承包经营权流转和收益的主体是( )。 有权依法自主决定土地承包经营权是否流转的主体是( )。 农村土地承包经营权流转的主体是( )。 大昌花海的参观攻略有哪些? 会计专硕从哪一年开始招生的 请问这是北票战国红吗?还是河北宣化玛瑙? ...to find package import: cportlibcb6.bpi是什么原因啊, 在其他电 ... 我在C++ Builder6.0上用cport.3.10,用控件comPort,编译提示找不到CPo... 格子铺怎样吸引人群来消费 细胞分裂过程中,染色体变化的结果和意义是什么?1 细胞分裂染时染色体的变化78 在细胞分裂的过程中,染色体是怎样变化的1 细胞分裂时期怎么看染色体和DNA的变化4 细胞分裂时,有关染色体的变化情况13 细胞分裂时染色体的形态和数目有变化吗133 剪辑师如何赚取提成? 如果孩子吸入了固体异物,应该采取哪些急救措施? 怎样用面积算出半径 红木家具的榫卯结构:为什么更加结实耐用? 3D硬金和千足金到底哪个更好? 买3d硬金好还是传统黄金好 逗音下单了主播手机怎么会有提醒功能? 3D硬足金和千足金有什么区别 求帮忙分析这行html代码 随机扩增多态性DNA的介绍 如图,矩形OABC在平面直角坐标系中,若OA、OC的长满足 ...1 如图,矩形OABC在平面直角坐标系中,若OA、OC的长满足|...3 如图,矩形OABC在平面直角坐标系中,若OA、OC的长满足 ...5 如图,矩形OABC在平面直角坐标系中,若OA、OC的长满足$...15 如图,矩形OABC在平面直角坐标系中,若OA、OC的长满足|...18 如图,矩形OABC中,OA、OC的长满足|OA-2|+(OC...4 如图在平面直角坐标系中四边形OABC是长方形,并且OA,OC...1 晚上,喝完蜂蜜水漱漱口可以吗? 晚上喝蜂蜜水要刷牙吗 为什么我的电脑用360漏洞修复,所有补丁都无法下载 ...共有腿100只,翅膀20对,三种动物各几只?(蜘蛛8条腿,蜻蜓6只翅膀... 用字母表示图形的周长和面积. 圆形 周长 面积 长方形 正方形