Как масштабировать Canvas и рисовать тонкие рамки по краям? - PullRequest
0 голосов
/ 16 мая 2018

Я изо всех сил пытался получить предварительный просмотр PDF-файла в Android Print Framework, чтобы он соответствовал выводу на печать. Тем не менее, я могу получить выходные данные в качестве растрового изображения. Однако, если я масштабирую растровое изображение и помещаю пробелы вокруг растрового изображения, Print Framework обрезает пустое пространство. Поэтому, чтобы этого не случилось, я хотел бы нарисовать тонкую границу вокруг края всего холста.

Это код, который мне нужно масштабировать:

public static Bitmap captureScreen(View v) {

    Bitmap screenshot = null;
    Bitmap output = null;
    try {

        if (v != null) {
            screenshot = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

            int width = screenshot.getWidth();
            int height = screenshot.getHeight();
            int scaledWidth = (int) (width * 0.5);
            int scaledHeight = (int) (height * 0.5);
            output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            Bitmap scaled = Bitmap.createScaledBitmap(screenshot, scaledWidth, scaledHeight, false);
            Canvas canvas = new Canvas(output);
            Paint paint = new Paint();
            int distX = (width - scaledWidth) / 2;
            int distY = (height - scaledHeight) / 2;
            canvas.drawBitmap(scaled, distX, distY, paint);

            v.draw(canvas);
        }

    } catch (Exception e) {
        Log.d("ScreenShotActivity", "Failed to capture screenshot because:" + e.getMessage());
    }
    return output;
}

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

1 Ответ

0 голосов
/ 16 мая 2018

Ну, у вас есть ширина и высота холста, просто позвоните Canvas.drawRect(0, 0, width - 1, height - 1, strokePaint)?

...