Canvas - misturar duas cores (cor intermediaria) |
Top Previous Next |
|
// Esta funcao retorna uma cor intermediaria entre duas
function GetColorBetween(const StartColor, EndColor: TColor): TColor; var r1, r2, r3, g1, g2, g3, b1, b2, b3: Byte;
function CalcColorBytes(const fb1, fb2: Byte): Byte; begin Result := fb1; if fb1 < fb2 then Result := FB1 + Trunc(0.5 * (fb2 - fb1)); if fb1 > fb2 then Result := FB1 - Trunc(0.5 * (fb1 - fb2)); end;
begin asm mov EAX, Startcolor cmp EAX, EndColor je @@exit mov r1, AL shr EAX,8 mov g1, AL shr Eax,8 mov b1, AL mov Eax, Endcolor mov r2, AL shr EAX,8 mov g2, AL shr EAX,8 mov b2, AL push ebp mov al, r1 mov dl, r2 call CalcColorBytes pop ecx push ebp Mov r3, al mov dL, g2 mov al, g1 call CalcColorBytes pop ecx push ebp mov g3, Al mov dL, B2 mov Al, B1 call CalcColorBytes pop ecx mov b3, al XOR EAX,EAX mov AL, B3 SHL EAX,8 mov AL, G3 SHL EAX,8 mov AL, R3 @@Exit: mov @result, eax end; end; |