怎么用vc画出一条直线?

用dda算法算法如下:voidCmyView::OnDDAline(){CDC*pDC=GetDC();//获得设备指针intxa=,ya=,xb=,yb=,c=RGB(... 用dda算法
算法如下:
void CmyView:: OnDDAline()
{
CDC* pDC=GetDC();//获得设备指针
int xa= ,ya= ,xb= ,yb= ,c=RGB(255,0,0);
int x,y;
float dx,dy,k;
dx=(float)(xb-xa),dy=(float)(yb-ya);
k=dy/dx;
y=ya;
if(abs(k)>1)
{
for(x=xa;x<=xb;x++)
{ pDC->SetPixel(x, int(y+0.5),c);
y=y+k;
}
else
{
for (y=ya;y<=yb;y++){
pDC->SetPixel(int(x+0.5),y,c);
x=x+1/k;
}
ReleaseDC(pDC);
}
怎么让他显示在vc新建的单页面窗口上?
我只想知道怎么添加成员函数,在哪里把代码粘进去
我不想要源代码
我想知道怎么在vc里添加画线的函数和应该加上什么头文件
展开
 我来答
百度网友091365a
2009-06-14 · TA获得超过203个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:154万
展开全部
在你的CXXXview类上右键 添加成员函数类型void 函数名DDALine(参数是两个点的xy坐标 还有颜色值RGB 一共五个参数)
再次鼠标右键CXXXView添加成员变量 参数两个点的坐标 四个参数 都是float 公有成员public
如果直接在窗体里根据已知参数话直线的话 把你的代码放在OnDraw()函数里

如果用鼠标操作的话 那你要添加windows消息 按快捷键ctrl+w 类向导找到你的CXXXView在消息里添加WM_OnLButtonDown(鼠标按下) WM_OnMouseMove(鼠标移动) WM_OnButtonUp(鼠标抬起) 并设置一个BOOL变量控制画线
在OnLButtonDown里传递参数point.x point.y等于初始点xy坐标 bool量=true
OnMouseMove里的point是第二坐标的xy
OnButtonUp bool量等于false
火驹
2009-06-14 · TA获得超过1447个赞
知道小有建树答主
回答量:6294
采纳率:0%
帮助的人:1716万
展开全部
建议你把函数void CmyView:: OnDDAline()
修改为 void CmyView:: OnDDAline(CDC* pDC,int xa,int ya,int xb,int yb)
{
}
把 CDC* pDC=GetDC();//获得设备指针
这一句删除

然后在OnDraw里调用该函数
OnDDAline(pDC,0,0,100,100);

添加函数,右击View类,选择“Add member function”,在新窗口里上面一栏输入void,下面一栏输入OnDDAline(CDC* pDC,int xa,int ya,int xb,int yb)
然后点“OK”
不用要头文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1d8e8b9
2009-06-16 · TA获得超过913个赞
知道小有建树答主
回答量:589
采纳率:60%
帮助的人:321万
展开全部
void OnDDAline( CDC * pDC, CPoint& pt1, CPoint& pt2 )
{
pDC->MoveTo( pt1 );
pDC->LineTo( pt2 );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanchangyong08
2009-06-16 · TA获得超过660个赞
知道小有建树答主
回答量:1096
采纳率:0%
帮助的人:0
展开全部
#include <windows.h>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paniclp
2009-06-14 · TA获得超过232个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:431万
展开全部
void CMFCLineView::OnDraw(CDC* pDC)
{
CMFCLineDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

int xa= 0 ,ya= -100 ,xb= 100 ,yb= 100 ,c=RGB(255,0,0);
int x,y;
float dx,dy,k;
dx=(float)(xb-xa),dy=(float)(yb-ya);
k=dy/dx;
y=ya;
if(abs((int)k)>1)
{
for(x=xa;x<=xb;x++)
{
pDC->SetPixel(x, int(y+0.5),c);
y=y+(int)k;
}
}
else
{
for (y=ya;y<=yb;y++)
{
pDC->SetPixel(int(x+0.5),y,c);
x=x+1/k;
}
}

// TODO: add draw code for native data here
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式