利用MFC中的ONDRAW函数画图问题
我正在学计算机图形学,要用MFC里的ONDRAW函数实现Liang_Barskey算法.我在CMyViwe中添加了一个成员函数voidCMyView::Liang_Bar...
我正在学计算机图形学,要用MFC里的ONDRAW函数实现Liang_Barskey算法.
我在CMyViwe中添加了一个成员函数
void CMyView::Liang_Barskey(int x1,int y1,int x2,int y2)
{double x=0,y=0,x0=0,y0=0,zx=0,zy=0,p1=0,p2=0,p3=0,p4=0,q1=0,q2=0,q3=0,q4=0,r1=0,r2=0,r3=0,r4=0,u1=0,u2=0;
zx=x2-x1;
zy=y2-y1;
p1=-zx;q1=x1-xmin;r1=q1/p1;
p2=zx;q2=xmax-x1;r2=q2/p2;
p3=-zy;q3=y1-ymin;r3=q3/p3;
p4=zy;q4=ymax-y1;r4=q4/p4;
pDC->Rectangle(xmin,ymin,xmax,ymax);
if(p1<0&&p3<0)
{
if(r1>r3)
u1=r1;
else
u1=r3;
if(u1<0)
u1=0;
x=x1+zx*u1;
y=y1+zy*u1;
}
if(p2>0&&p4>0)
{
if(r2<r4)
u2=r2;
else
u2=r4;
if(u2>1)
u2=1;
x0=x1+zx*u2;
y0=y1+zy*u2;
}
pDC->MoveTo(x,y);
pDC->LineTo(x0,y0);
}
并在OnDraw中写如下代码:
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int xmin=200,xmax=400,ymin=200,ymax=400,x1=100,y1=200,x2=500,y2=300;
Liang_Barskey(x1,y1,x2,y2);
编译器说有2处错误:
D:\我的C++程序\裁剪\裁剪View.cpp(62) : error C2660: 'Liang_Barskey' : function does not take 4 parameters
D:\我的C++程序\裁剪\裁剪View.cpp(109) : error C2511: 'Liang_Barskey' : overloaded member function 'void (int,int,int,int)' not found in 'CMyView'
d:\我的c++程序\裁剪\裁剪view.h(13) : see declaration of 'CMyView'
Error executing cl.exe.
裁剪View.obj - 2 error(s), 0 warning(s)
请问错误原因是什么?怎么修改? 谢谢 展开
我在CMyViwe中添加了一个成员函数
void CMyView::Liang_Barskey(int x1,int y1,int x2,int y2)
{double x=0,y=0,x0=0,y0=0,zx=0,zy=0,p1=0,p2=0,p3=0,p4=0,q1=0,q2=0,q3=0,q4=0,r1=0,r2=0,r3=0,r4=0,u1=0,u2=0;
zx=x2-x1;
zy=y2-y1;
p1=-zx;q1=x1-xmin;r1=q1/p1;
p2=zx;q2=xmax-x1;r2=q2/p2;
p3=-zy;q3=y1-ymin;r3=q3/p3;
p4=zy;q4=ymax-y1;r4=q4/p4;
pDC->Rectangle(xmin,ymin,xmax,ymax);
if(p1<0&&p3<0)
{
if(r1>r3)
u1=r1;
else
u1=r3;
if(u1<0)
u1=0;
x=x1+zx*u1;
y=y1+zy*u1;
}
if(p2>0&&p4>0)
{
if(r2<r4)
u2=r2;
else
u2=r4;
if(u2>1)
u2=1;
x0=x1+zx*u2;
y0=y1+zy*u2;
}
pDC->MoveTo(x,y);
pDC->LineTo(x0,y0);
}
并在OnDraw中写如下代码:
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int xmin=200,xmax=400,ymin=200,ymax=400,x1=100,y1=200,x2=500,y2=300;
Liang_Barskey(x1,y1,x2,y2);
编译器说有2处错误:
D:\我的C++程序\裁剪\裁剪View.cpp(62) : error C2660: 'Liang_Barskey' : function does not take 4 parameters
D:\我的C++程序\裁剪\裁剪View.cpp(109) : error C2511: 'Liang_Barskey' : overloaded member function 'void (int,int,int,int)' not found in 'CMyView'
d:\我的c++程序\裁剪\裁剪view.h(13) : see declaration of 'CMyView'
Error executing cl.exe.
裁剪View.obj - 2 error(s), 0 warning(s)
请问错误原因是什么?怎么修改? 谢谢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询