clipblit.inc

来自「vc写的源程序,是关于游戏类的程序。调用了系统的很多API」· INC 代码 · 共 74 行

INC
74
字号
// 计算要复制的位图是否在剪裁矩形之外
		MOV ebx, dest_bmp;
		MOV eax, x;
		CMP eax, [ebx]BMP.clipright;
		JG _bitblt_end;
		MOV eax, y;
		CMP eax, [ebx]BMP.clipbottom;
		JG _bitblt_end;

		MOV eax, x;
		ADD eax, w;
		DEC eax;
		CMP eax, [ebx]BMP.clipleft;
		JL _bitblt_end;
		MOV eax, y;
		ADD eax, h;
		DEC eax;
		CMP eax, [ebx]BMP.cliptop;
		JL _bitblt_end;

// x和y小于剪裁矩形的剪裁
		MOV edx, x;
		CMP edx, [ebx]BMP.clipleft;
		JNL _align_clip_x;
		MOV eax, [ebx]BMP.clipleft;
		SUB eax, x;
		SUB w, eax;
		MOV edx, [ebx]BMP.clipleft;
		MOV x, edx;

		MOV ecx, srcx;
		ADD ecx, eax;
		MOV srcx, ecx;
_align_clip_x:
		MOV edx, y;
		CMP edx, [ebx]BMP.cliptop;
		JNL _align_clip_y;

		MOV eax, [ebx]BMP.cliptop;
		SUB eax, y;
		SUB h, eax;
		MOV edx, [ebx]BMP.cliptop;
		MOV y, edx;
		
		MOV ecx, srcy;
		ADD ecx, eax;
		MOV srcy, ecx;
_align_clip_y:

// x和y大于剪裁矩形的剪裁
		MOV edx, [ebx]BMP.clipright;
		SUB edx, [ebx]BMP.clipleft;
		INC edx;
		MOV eax, x;
		ADD eax, w;
		CMP eax, edx;
		JLE _align_clip_right;
		SUB eax, edx;
		MOV ecx, w;
		SUB ecx, eax;
		MOV w, ecx;
_align_clip_right:
		MOV edx, [ebx]BMP.clipbottom;
		SUB edx, [ebx]BMP.cliptop;
		INC edx;
		MOV eax, y;
		ADD eax, h;
		CMP eax, edx;
		JLE _align_clip_bottom;
		SUB eax, edx;
		MOV ecx, h;
		SUB ecx, eax;
		MOV h, ecx;
_align_clip_bottom:

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?