坐标系的转换问题
环境:VS2005
CMyView 的基类是CScrollView
void CMyView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 计算此视图的合计大小
sizeTotal.cx = sizeTotal.cy = 1000;
SetScrollSizes(MM_LOMETRIC, sizeTotal);
}
void CMyView::OnDraw(CDC* pDC)
{
CGridDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
Graphics graphics(pDC-> m_hDC);
Pen pen(Color(255, 0, 0, 255));
graphics.DrawLine(&pen, 0, 0, 200, 100);
}
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 在此添加专用代码和/或调用基类
CRect rect;
GetClientRect(&rect);
pDC-> SetMapMode(MM_LOMETRIC);
pDC-> SetViewportOrg(0,rect.Height());
CScrollView::OnPrepareDC(pDC, pInfo);
}
不知道是什么原因,view里没有我想要的直线.
[解决办法]
onpaint
[解决办法]
SetScrollSizes(MM_LOMETRIC, sizeTotal);
//把MM_LOMETRIC 改成 MM_TEXT...
[解决办法]
.....
你添加了滚动条后
设备坐标和逻辑坐标就不同了 //没加前是一样的
要转换坐标..
这样才能在你指定的位置上画出线
//-----------------------------------
对鼠标响应消息函数的光标转换:
CClientDC dc( this );
OnprepareDC( &dc );
DPtoLP( &point );
//------------------------------------
再试试..
//-------------------------------------
SetScrollSizes( MM_..,sizeTotal )中的参数设置问题..
你要查MSDN
看你需要什么...?
//--------------------------------------
画完线后
还要做保存处理
不然View 一有 "动作 ",图就不见了..