各位仁兄,小弟有一事不明:在一个窗口中显示一个bitmap图片,如果用GetPixel()函数进行直观的取点得到各像素的RGB值,但是令我很是恼火,只有GetPixel(x,y)中的y值取负值时,才能取到像素的RGB值,各位能不能详细地说一下?
越详细越好

解决方案 »

  1.   

    设备环境默认映射模式MM_TEXT是y值向下递增
    而在指定模式MM_HIMETRIC下y值是向下递减的
    所以y取负值
      

  2.   

    nelark(浆糊)老兄,我还是有一事不明:如果在Project中加入鼠标事件,用鼠标取点的话,(即为wm_lbuttondown事件编写函数)得到的点的坐标竟然都是正的(例如CPoint point;中的point.x和point.y),这又是为什么?
      

  3.   

    鼠标事件得到的坐标是相对于客户物理坐标。
    你的GetPixel(x,y)到底是哪一个?是不是CDC::GetPixel(x,y)?
      

  4.   

    可以看看Program Windows with MFC 或者The Windows Programing (the fifth edition),或者Windows Graphics Programming。
      

  5.   

    鼠标事件返回的坐标是设备坐标,以 left-top 为 (0, 0),这是固定的。
    但是大多 GDI 函数如 SetPixel 接受的输入是逻辑坐标,这个坐标可以通过 SetMapMode 改变。设备坐标和逻辑坐标互相转换,可用的函数是 LPtoDP, DPtoLP