我在视图中显示了一张图片(按照图片实际大小显示),由于图像的实际大小大于视图区域的大小,因此,我加上滚动条,这样可以浏览全部的图像。我的图像大小为2560×1920,视图区域只有400×300, 我用鼠标选择某点,请问该如何得到该点在图像上的实际位置?

解决方案 »

  1.   

    当前滚动左上角相对滚动pt0;
    当前点为curpt, 则pt = curpt - pt0
      

  2.   

    关键是得到当前视图左上角在图像中的位置,然后加上鼠标位置(相对于视图)就可以了。
    由于不知道你这么处理滚动,所以没法说
    如果用CScrollView,那只要GetScrollPosition + 鼠标位置(对视图)就可以
      

  3.   

    CPoint ClientPoint;
    CPoint ScrollPoint = GetScrollPosition();
    int x=ScrollPoint.x+ClientPoint.x;
    int y=ScrollPoint.y+ClientPoint.y;
      

  4.   

    我是楼主!当我把鼠标放在图片上某些点时,会出现TOOLTIPS信息,
    比如图片上点A(500,200),在视图上为(100,200)其TOOLTIPS信息为“POINT A”,
    图片上点B(700,200),也放在视图上的(100,200)这个位置,按说应该出现“POINT B”
    ,但是,结果还是出现“POINT A”,请问该怎么办?
      

  5.   

    CPoint ClientPoint;
    CPoint ScrollPoint = GetScrollPosition();
    int x=ScrollPoint.x+ClientPoint.x;
    int y=ScrollPoint.y+ClientPoint.y;
    我这样做了,可以实现滚动条的滚动,但是,视图中的图像并没有发生变化,
    我加入了Invalidate(TRUE),这样可以使视图发生变化,但是屏幕却闪的厉害,
    请问该怎么办?
      

  6.   

    屏幕却闪的厉害
    http://vcworm.51.net/interface/preventglint.htm