y
y
y
(4) ty≥height,图象完全移出了屏幕,不用做任何处理。
这种做法利用了位图存储的连续性,即同一行的象素在内存中是相邻的。利用 memcpy函数, 从(x ,y )-x )处,拷 0 0 点开始,一次可以拷贝一整行(宽度为 x1 0 ,然后将内存指针移到(x ,y +1)0 0 贝下一行。这样拷贝(y -y )1 0 行就完成了全部操作,避免了一个一个象素的计算,提高了效率。 Translation的源代码如下: int xOffset=0,yOffset=0; BOOL Translation(HWND hWnd) {
DLGPROC DWORD
dlgInputBox = NULL; OffBits,BufSize;
LPBITMAPINFOHEADER lpImgData; LPSTR HLOCAL
lpPtr;
hTempImgData;
LPBITMAPINFOHEADER lpTempImgData; LPSTR int int int BOOL HDC HFILE int
lpTempPtr;
SrcX0,SrcY0,SrcX1,SrcY1; DstX0,DstY0,DstX1,DstY1; RectWidth,RectHeight; xVisible,yVisible; hDc; hf; i;
//出现对话框,输入 x偏移量 xOffset,和 y偏移量 yOffset
dlgInputBox = (DLGPROC) MakeProcInstance ( (FARPROC)InputBox,ghInst ); DialogBox (ghInst, \FreeProcInstance