Cohen-Surtherland算法
新建一个文档命名为1124,文档类型为单文档。
创建CP2类
右键1124 classes,点击new class新建一个类CP2:
在CP2类中声明三个域:(double x;double y;UINT rc;)
找到cpp文件,在里面引用CP2这个类:(#include “P2.h”)
在CView类中新建两个CP2类型的变量p0、p1和四个成员变量(定义矩形的四个方向的边界):
(这四个边界变量用double、int都可以)
在构造函数中给这四个变量赋值。
CMy11122View::CMy11122View()
{
// TODO: add construction code here
wxl=-300,wyb=-100,wxr=300,wyt=100;
}
新建函数DrawClipWindow(CDC*pDC),用来画矩形。
void CMy11122View::DrawClipWindow(CDC*pDC)
{
CRect rect(wxl,wyb,wxr,wyt);
pDC->Rectangle(rect);
}
在OnDraw函数中调用画矩形函数
void CMy11122View::OnDraw(CDC* pDC)
{
CMy11122Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
DrawClipWindow(pDC);//绘制裁剪窗口
// TODO: add draw code for native data here
}
增加鼠标点击函数:
-
新建成员变量flag(用来判断赋值给p0还是p1,以及画线)
-
在构造函数中将flag初始化为0
CMy11122View::CMy11122View()
{
// TODO: add construction code here
wxl=300,wyb=100,wxr=700,wyt=400;
flag=0;
}
3. 双击WM_LBUTTONDOWN添加该函数,点击Add and Edit编辑函数。
4. 在函数中编写如下代码:
void CMy11122View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC*pDC=GetDC();
if(flag==0)
{
p0.x=point.x;
p0.y