您的位置:首页 > 其它

将picture控件坐标 映射为逻辑坐标1000×1000

2009-10-13 15:35 204 查看
方法如下:

一): 获取picture控件窗口指针

CWnd *pwd=GetDlgItem(IDC_SHOW)

二): 获取picture控件的窗口坐标,将其窗口坐标信息保存在rect中

CRect rect;

pwd->GetWindowRect(&rect);

三): 将窗口坐标转换为对话框的客户区坐标

ScreenToClient(rect); //将rect中保存的点转换为对话框客户区坐标

四): 获得画图设备描述符

CDC *pdc=pwd->GetDC();

五): 设置设备坐标与逻辑坐标的映射模式

pdc->SetMapMode(MM_ANISOTROPIC);

六): 设置设备坐标范围

pdc->SetWindowExt(1000,1000);

七): 设置映射的逻辑坐标范围

pdc->SetviewportExt(rect.Width(), -rect.Height()); //逻辑坐标默认y是自上往下的 ,-rect.Height 表示现在逻辑坐标为自下往上

八): 设置逻辑坐标的原点

pdc->SetViewportOrg(0,rect.Heigh());

//其参数是相对于picture控件而言的, picture控件的左上角为(0,0)点, 因此(0,rect.Height)为pictuer控件的左下角点

因此,这句话的意思就是将picture控件的左下角作为逻辑坐标的原点。

这样,就将picture控件 映射为1000*1000的逻辑坐标了

其中,picture控件的左下角为逻辑坐标原点,x往右 y往上

pdc->SetPixel(x,y, RGB(0,0,0)); 中的x,y便是相对于逻辑坐标原点而言的,为逻辑坐标。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: