设置视图区的坐标原点

xzybw 2005-07-25 10:55:50
各位前辈:请帮忙(急!!!)
我正在用VC做一个数控加工代码的编译器,需要在视图区将数控代码刀具轨迹显示出来。现在我设置下面两个函数试图完成坐标的设置,并希望将坐标设置在视图的中心:
void CEmulateView::MyPrepareDC(CDC *pDC, CPrintInfo *pInfo)
{
OnPrepareDC(pDC, pInfo);

//Set the Orgnization of the window
CSize size;
size=GetTotalSize();
pDC->SetWindowOrg(-size.cx/2, size.cy/2);

}

void CEmulateView::OnInitialUpdate()
{
CView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class
CSkDoc* pDoc = GetDocument();

//Set the Initial scroll size
SetScrollSizes(MM_HIMETRIC,CSize(1280, 1024));

并在调用OnDraw()函数来显示,
void CEmulateView::OnDraw(CDC* pDC)
{
CSkDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code here
CPen penRed(PS_SOLID,2,RGB(255 , 0 , 255 ));
CPen *pOldPen=NULL;

pOldPen=pDC->SelectObject(&penRed);

pDC->SelectStockObject(NULL_BRUSH);
pDC->SelectStockObject(NULL_BRUSH);

//绘制坐标轴
pDC->MoveTo(10,350);
pDC->LineTo(600,350);
pDC->LineTo(580,340);
pDC->MoveTo(600,350);
pDC->LineTo(580,360);
pDC->MoveTo(10,350);
pDC->LineTo(10,620);
pDC->LineTo(0,610);
pDC->MoveTo(10,620);
pDC->LineTo(20,610);
}
可是,坐标没有达到预期的目的。为什么?

恳请各位前辈指教。谢谢先!
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzybw 2005-07-28
  • 打赏
  • 举报
回复
继续 UP!!!
xzybw 2005-07-28
  • 打赏
  • 举报
回复
谢谢楼上的 xzybw1975!!!



问题解决一定给分!
xzybw1975 2005-07-28
  • 打赏
  • 举报
回复
to: xzybw

首先在该类的OnInitialUpdate() 函数中加入下面一行代码来设置视图区的大小,

//Set the Initial scroll size
CSize sizeTotal(200000, 300000); // 20 by 30 cm
CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2);
CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50);
SetScrollSizes(MM_HIMETRIC, sizeTotal, sizePage, sizeLine);

再使用类向导为该类创建OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)函数,并添加下面一行代码

// TODO: Add your specialized code here and/or call the base class
pDC->SetMapMode(MM_HIMETRIC);
CView::OnPrepareDC(pDC, pInfo);

最后,在OnDraw()函数中添加下面四行代码:

CRect rectClient;
GetClientRect(rectClient);
pDC->SetViewportExt(rectClient.right,-rectClient.bottom);
pDC->SetViewportOrg(rectClient.right/2,rectClient.bottom/2);


试试看能否有帮助,我试了一下,Ok!
BuZhang_AP97091 2005-07-27
  • 打赏
  • 举报
回复
CSize size;
size=GetTotalSize();
pDC->SetWindowOrg(-size.cx/2, size.cy/2);

size的值是不是你所需要的,跟进去看一看。

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧