Entendiendo el recorte de lienzo de Android

Estoy teniendo problemas para encontrar una respuesta a esto. Considere el siguiente código de recorte:

boolean is_ok = mycanvas.clipRect(clip_left, clip_top, clip_right+1, clip_bottom+1); mycanvas.getClipBounds(clipRect); if (!is_ok || clipRect.left != clip_left || clipRect.top != clip_top || clipRect.right != clip_right+1 || clipRect.bottom != clip_bottom+1) { Log.i("DEBUG", "setClipping failed"); } 

Cuando se devuelven los límites del clip, no coinciden con lo que se acaba de configurar. Por ejemplo, si clip_left, clip_top, clip_right, clip_bottom son (100, 50, 109, 59), entonces esperaría que los límites de recorte para ser (100, 50, 110, 60) dado el código anterior. No lo es. GetClipBounds () devuelve (100, 51, 110, 60).

¿Por qué es top = 51 cuando sólo lo configuro a 50? Hay algo bajo el capó que no entiendo todavía.

OK, necesito leer más claramente antes de hacer preguntas. En caso de que alguien esté interesado, yo mismo responderé:

Al establecer un nuevo clipRect, asumí que reemplazaría el recorte anterior. Esto NO es así. En su lugar, crea una intersección con el recorte anterior. Desde la página de desarrolladores de Android:

ClipRect (flotador a la izquierda, flotador superior, flotador a la derecha, flotante inferior)

Intersectar el clip actual con el rectángulo especificado, que se expresa en coordenadas locales.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.