您的位置:首页 > 编程语言 > C语言/C++

使用VC++绘制坐标系

2016-03-22 19:22 501 查看
首先打开VC++,新建一个单文档应用程序;



按下图,为View类添加消息处理函数,变更单文档窗体背景色为黑色;



在菜单中添加如下菜单;



为菜单添加消息处理函数;添加在View类中;



在View类头文件中添加三个成员变量;

int zbtype;//坐标系类别
int w,h;
//存储窗口宽和高
int w2,h2;
//存储窗口宽和高的一半

在View类构造函数中初始化成员变量;

CZbdemoView::CZbdemoView()

{
// TODO: add construction code here
zbtype=1;

w=0;

h=0;
w2=0;
h2=0;

}

三个菜单的消息处理函数中更改坐标系类型,然后刷新窗口;

void CZbdemoView::OnMenuitem32771() 

{
// TODO: Add your command handler code here
zbtype=1;
Invalidate();

}

void CZbdemoView::OnMenuitem32772() 

{
// TODO: Add your command handler code here
zbtype=2;
Invalidate();

}

void CZbdemoView::OnMenuitem32773() 

{
// TODO: Add your command handler code here
zbtype=3;
Invalidate();

}

改变窗口背景为黑色的代码;

BOOL CZbdemoView::OnEraseBkgnd(CDC* pDC) 

{
// TODO: Add your message handler code here and/or call default

CRect rectClient;

    GetClientRect(&rectClient);

    pDC->FillSolidRect(&rectClient, RGB(0,0,0) );

    return TRUE;

//return CView::OnEraseBkgnd(pDC);

}

在View类OnDraw函数中按坐标系类别绘制坐标系;

void CZbdemoView::OnDraw(CDC* pDC)

{
CZbdemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPen pen(PS_SOLID,1,RGB(255,0,0));//构造画笔对象
CPen *pOldPen;
pOldPen=pDC->SelectObject(&pen);

RECT rect1;
GetClientRect(&rect1);
w=rect1.right;
h=rect1.bottom;
w2=rect1.right/2;
h2=rect1.bottom/2;

switch(zbtype)
{
case 1:
pDC->MoveTo(0,h2);
pDC->LineTo(w,h2);
pDC->MoveTo(w2,0);
pDC->LineTo(w2,h);
break;
case 2:
pDC->MoveTo(6,h-6);// 距离边缘6个像素
pDC->LineTo(w,h-6);
pDC->MoveTo(6,6);
pDC->LineTo(6,h-6);
break;
case 3:
pDC->MoveTo(6,h-6);// 距离边缘6个像素
pDC->LineTo(w,h-6);
pDC->MoveTo(w2,0);
pDC->LineTo(w2,h-6);
break;

}

pDC->SelectObject(pOldPen);//恢复先前的画笔

}

三种坐标系效果分别如下;箭头尚未画出;下回分解;如果未见到画的线,可检查坐标点计算是否正确;





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息