Как я могу получить границы вокруг своего растрового контента? - PullRequest
0 голосов
/ 01 февраля 2019

Я не могу получить границы вокруг растрового контента, как я могу получить границы контента, код ниже может дать мне только рамку вокруг изображения, а не контента.

  mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setStrokeWidth(10); // set stroke width
    mPaint.setColor(getResources().getColor(R.color.black)); // set stroke color
    mPaint.setAntiAlias(true);
    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icons8_bus_36_2);
    tempBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas tempCanvas = new Canvas(tempBitmap);
    Rect rect = new Rect(
            10 / 2,
            10 / 2,
            tempCanvas.getWidth() - 10 / 2,
            tempCanvas.getHeight() - 10 / 2);
    tempCanvas.drawRect(rect,mPaint);
    tempCanvas.drawBitmap(bitmap, 0, 0, mPaint);

1 Ответ

0 голосов
/ 01 февраля 2019

На этой части:

Rect rect = new Rect(
            10 / 2,
            10 / 2,
            tempCanvas.getWidth() - 10 / 2,
            tempCanvas.getHeight() - 10 / 2);

изменить на

Rect rect = new Rect(
            10 / 2,
            10 / 2,
            (tempCanvas.getWidth() - 10) / 2,
            (tempCanvas.getHeight() - 10) / 2);

Это потому, что 10 делится на два первых

Кроме того, сначала нарисуйте растровое изображение, прежде чем рисовать прямоугольник

ИЛИ

Вы можете нарисовать с этим:

Path clipPath = new Path();
RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
canvas.clipPath(clipPath);
...