0

我的应用程序是基于 mfc CDialog 的。CImageView 继承自 CScrollView。我的图像是 1600x 1000。我的客户区域小于图像大小。我喜欢获取左键单击或移动鼠标的像素坐标。

void CImageView::OnLButtonDown(UINT nFlags, CPoint pt)
{
CString s;
s.Format("%d %d", pt.x,pt.y);
AfxMessageBox(s);
}

如果我将垂直和水平条分别滚动到底部和右侧,我可以查看最右下角的像素,但它的坐标 (x,y) 不正确,它小于 1600x1000。如果滚动条被移动,我如何获得正确的像素坐标?似乎随着滚动条的移动,1,1 像素位置也移动了。

4

1 回答 1

1

使用GetScrollPosition此处为 MSDN)根据滚动条位置检索客户区左上角的 xy 坐标,然后添加通过鼠标单击获得的 xy 偏移量。

void CImageView::OnLButtonDown(UINT nFlags, CPoint pt)
{
    CPoint ptImage = GetScrollPosition() + pt;
    CString s;
    s.Format("%d %d", ptImage.x, ptImage.y);
    AfxMessageBox(s);
}
于 2013-07-09T07:03:08.677 回答