19,466
社区成员
发帖
与我相关
我的任务
分享
void DrawEdge(COLORREF Color)//Color=你要删除的颜色
{
if( BeginDraw() )
{
COLORREF* pDest=((COLORREF*)(m_GraphBuffer+m_Pitch+1));
COLORREF Key_Color=m_DrawColor.dwColorSpaceLowValue;
int srcw=m_Desc.dwWidth-1;
int srch=m_Desc.dwHeight-1;
int Pitch=m_Desc.lPitch;
for(int j=0;j<srch;j++)
{
__asm
{
mov edi,srcw;
mov esi,Color;
mov ebx,dword ptr [pDest];//装入pDest
mov ecx,Key_Color;//装入Color
xor edx,edx;
cmp edx,srcw;
jc STLOOP;
jmp ENDLOOP;
STLOOP:
cmp [ebx],ecx;
je LBEND;
cmp ecx,[ebx+4];
je LBOUT;
cmp [ebx-4],ecx;
je LBOUT;
mov eax,ebx
add eax,Pitch;
cmp [eax],ecx;
je LBOUT;
mov eax,ebx
sub eax,Pitch;
cmp [eax],ecx;
je LBOUT;
jmp LBEND;
LBOUT:
mov dword ptr[ebx],esi;
LBEND:
add ebx,4;
inc edx;
cmp edx,edi;
jc STLOOP;
jmp ENDLOOP;
ENDLOOP:
mov pDest,ebx;
}
}
EndDraw();
}
}