首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

坐标系的转换有关问题

2012-02-05 
坐标系的转换问题环境:VS2005CMyView的基类是CScrollViewvoidCMyView::OnInitialUpdate(){CScrollView::On

坐标系的转换问题
环境: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 一有 "动作 ",图就不见了..

热点排行