使用VC++绘制坐标系
首先打開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);//恢復先前的畫筆
}
三種坐標系效果分別如下;箭頭尚未畫出;下回分解;如果未見到畫的線,可檢查坐標點計算是否正確;
?
?
總結
以上是生活随笔為你收集整理的使用VC++绘制坐标系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度地图API开发概述
- 下一篇: 用VC++实现一个文本文件阅读器