为什么 在 
8位模式下 求像素点的位置为x+y*(ddsd.lPitch)
面在
16位模式下求像素点的位置为x+y*(ddsd.lPitch>>1)ddsd.lPitch不是反回的表面的跨度吗?
难道不是显示模式是 8位 16 位 24位 还是其它.它都只反回8位的表面跨度

解决方案 »

  1.   

    再请问,CSDN没有 DX的专栏吗?在哪里找
      

  2.   

    ddsd.lPitch 这个8位   16   位   24位各不一样。
    x+y*(ddsd.lPitch> > 1) 这个是因为16位一个像素两个字节
      

  3.   

    ddsd.lPitch不是反回了 各种位深的跨度了码?
    假如:8位 为 8; 16位的为 16。
    如果:x+y*(8),8位时对了。
    但:x+y*(16/2) ,16位时好像不对,应该是x+y*(16)。 
    请指点。
    这里确实有点晕
      

  4.   

    根据你的代码,你的循环里x的最在不是lPitch,对不对。x的最大是图像宽度?
    那么像素点的相对内存偏移为(x +y*(16/2))*2;
    要么就是x*2+y*lPitch.
      

  5.   

    8位是  x + y * lPitch
    16位是 2 * x + y * lPitch
    24位是 3 * x + y * lPitch
    32位是 4 * x + y * lPitch好象没有lPitch >> 1这样的写法