正在加载图片...
图260 tx<width,0< ty<height的情况 (4)ts≥ width:很显然,图象完全移出了屏幕,不用做任何处理。 y方向是对应的 height表示图象的高度) (1)t≤- height,图象完全移出了屏幕,不用做任何处理; (2)- height<t≤0,图象区域的y范围从0到 height-It对应原图的范围从到 height: (3)0<t< height,图象区域的y范围从t到 heigh对应原图的范围从0到 height-t, (4)t≥ height,图象完全移出了屏幕,不用做任何处理。 这种做法利用了位图存储的连续性,即同一行的象素在内存中是相邻的。利用 memcpy函数, 从(x0yo)点开始,一次可以拷贝一整行(宽度为x-xo),然后将内存指针移到(x,yo+1)处,拷 贝下一行。这样拷贝(y1-yo)行就完成了全部操作,避免了一个一个象素的计算,提高了效率。 Translation的源代码如下: int xOffset=0, yOffset=0 BOOL Translation( HWND hWnd) DLGPROC dIglnput Box=NULL LPBITMAPINFOHEADER IplmgData; LPSTR HLOCAL hTemplmgData LPBITMAPINFOHEADER IpTemplmg Data LPSTR IpTempPtr SrcXo. SrcYo. SrcXl. SrcY1 DstXo. DstYo. DstXl. styl图 2.6 0< tx<width,0<ty<height 的情况 (4) tx ≥width:很显然,图象完全移出了屏幕,不用做任何处理。 y 方向是对应的(height 表示图象的高度): (1) ty≤-height,图象完全移出了屏幕,不用做任何处理; (2) -height<ty≤0,图象区域的 y 范围从 0 到 height-|ty|,对应原图的范围从|ty|到 height; (3) 0<ty<height ,图象区域的 y 范围从 ty 到 height,对应原图的范围从 0 到 height-ty; (4) ty≥height,图象完全移出了屏幕,不用做任何处理。 这种做法利用了位图存储的连续性,即同一行的象素在内存中是相邻的。利用 memcpy 函数, 从(x0,y0)点开始,一次可以拷贝一整行(宽度为 x1-x0),然后将内存指针移到(x0,y0+1)处,拷 贝下一行。这样拷贝(y1-y0)行就完成了全部操作,避免了一个一个象素的计算,提高了效率。 Translation 的源代码如下: int xOffset=0,yOffset=0; BOOL Translation(HWND hWnd) { DLGPROC dlgInputBox = NULL; DWORD OffBits,BufSize; LPBITMAPINFOHEADER lpImgData; LPSTR lpPtr; HLOCAL hTempImgData; LPBITMAPINFOHEADER lpTempImgData; LPSTR lpTempPtr; int SrcX0,SrcY0,SrcX1,SrcY1; int DstX0,DstY0,DstX1,DstY1; int RectWidth,RectHeight;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有