怎么用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里添加画线的函数和应该加上什么头文件 展开
算法如下:
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里添加画线的函数和应该加上什么头文件 展开
7个回答
展开全部
在你的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
再次鼠标右键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
展开全部
建议你把函数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”
不用要头文件
修改为 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”
不用要头文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void OnDDAline( CDC * pDC, CPoint& pt1, CPoint& pt2 )
{
pDC->MoveTo( pt1 );
pDC->LineTo( pt2 );
}
{
pDC->MoveTo( pt1 );
pDC->LineTo( pt2 );
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <windows.h>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
}
{
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
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询