VC 图形编辑 求助!

来源:百度知道 编辑:UC知道 时间:2024/06/16 22:41:09
现在正在做个 图形编辑方面的软件。 VC 。
主要完成图形数据的 缩放和 鼠标移动。
我在onLbuttonDown 中获取起点位置。在ONLButtonUp中获取终点 位置。然后 得到差值。使SetViewportOrg()各个坐标加上该差值。重画图形来实现。不知道为什么 图形的位置有差异。 不是预期的终点位置 。 这里使两点坐标差值。应该和设备坐标和 逻辑坐标的转换没有关系吧 ??
请高人指点一二 !!??

用设备坐标捕捉点坐标后,将其转换为逻辑坐标

转换方法如下:
CClientDC dc(this);
然后和绘图之前所做的 SetViewMode,SetViewportOrg,SetWindowOrg 一致的方法对这个dc做变换
最后转换
dc.LPtoDP(&point);

可以创建一个函数,在绘图前和转换前调用:
MyPrepareDC(CDC * pdc)
{
SetViewMode(...
SetViewOrg...
SetWindowOrg.....
}

然后继承 OnPrepareDC 去调用这个函数
OnPrepareDC( CDC * pDC,...)
{
MyPrepareDC(pDC);
}
这样就可以在其他地方使用了

CClientDC dc(this);
MyPrepareDC(&dc);
dc.LPtoDP(&point);

我觉得应该是你客户区坐标和屏幕坐标的问题;
使用ClientToScreen函数转换一下坐标试试;不知道你的具体情况或者用ScreenToClient试试。

fdas