Я реализую функцию обрезки изображения.Android ImageView.draw() оставляет след
Я рисую прямоугольник обрезки и выделяю как в примере кода ниже. Этот aproach отлично работает с android 2.x.x. Но с 4.x мне пришлось повернуть аппаратное ускорение, потому что Canvas.clipPath
не работал должным образом.
После этого я получаю эти тропы. Я как бы новый для холста, и я был бы признателен за любую помощь.
Пример кода
Rect viewDrawingRect = new Rect();
imageView.getDrawingRect(viewDrawingRect);
path.addRect(new RectF(drawRect), Path.Direction.CW);
canvas.clipPath(path, Region.Op.DIFFERENCE);
canvas.drawRect(viewDrawingRect, hasFocus() ? focusPaint : noFocusPaint);
canvas.restore();
canvas.drawPath(path, outlinePaint);
int left = drawRect.left;
int right = drawRect.right;
int top = drawRect.top;
int bottom = drawRect.bottom;
int widthWidth = resizeDrawableWidth.getIntrinsicWidth()/2;
int widthHeight = resizeDrawableWidth.getIntrinsicHeight()/2;
int heightHeight = resizeDrawableHeight.getIntrinsicHeight()/2;
int heightWidth = resizeDrawableHeight.getIntrinsicWidth()/2;
int xMiddle = drawRect.left + ((drawRect.right - drawRect.left)/2);
int yMiddle = drawRect.top + ((drawRect.bottom - drawRect.top)/2);
resizeDrawableWidth.setBounds(left - widthWidth,
yMiddle - widthHeight,
left + widthWidth,
yMiddle + widthHeight);
resizeDrawableWidth.draw(canvas);
resizeDrawableWidth.setBounds(right - widthWidth,
yMiddle - widthHeight,
right + widthWidth,
yMiddle + widthHeight);
resizeDrawableWidth.draw(canvas);
resizeDrawableHeight.setBounds(xMiddle - heightWidth,
top - heightHeight,
xMiddle + heightWidth,
top + heightHeight);
resizeDrawableHeight.draw(canvas);
resizeDrawableHeight.setBounds(xMiddle - heightWidth,
bottom - heightHeight,
xMiddle + heightWidth,
bottom + heightHeight);
resizeDrawableHeight.draw(canvas);
Я могу поклясться, что сделал аннулирование перед рисованием :) –