Android PorterDuff: Почему PorterDuff.Mode.SRC_IN не вырезает остальную часть источника? - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь использовать библиотеку PorterDuff, чтобы обрезать холст и прямоугольник, чтобы сформировать четверть квадрата в моем пользовательском представлении для моего приложения, мне удалось заставить его работать, но не полностью, потому что оно обрезает квадратно держит остальную часть круга, я использую режим SRC_IN, который кажется правильным для просмотра документации Android для него, но он не работает должным образом, это фрагмент метода onDraw в моем пользовательскомкласс представления:

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int height = getHeight();
        int width = getWidth();
        canvas.drawCircle(width / 2, height / 2, (width + height) / 10, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        Rect rectangle = new Rect(0, 0, width / 2, height / 2);
        paint.setColor(Color.RED);
        canvas.drawRect(rectangle, paint);

    }

Я рисую круг в центре экрана, а затем рисую квадрат в левом верхнем углу экрана, и режим PorterDuff должен в основном получить пересеченную часть между фигурами, ноон просто обрезает непересекающуюся квадратную часть, но не делает то же самое для круга.

Вот как это выглядит: Screenshot of my app

Я не могу сказать, что я 'Я делаю что-то не так, надеюсь, кто-то может указать на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...