canvas.drawBitmap () не масштабирует изображения - PullRequest
0 голосов
/ 13 октября 2019

Я новичок в кодировании Android. В качестве первого проекта я решил портировать игру ZX Spectrum. Я подготовил растровые рамки автомобиля и кнопки, которые будут масштабироваться в зависимости от размера экрана. Я поместил изображения в папки «drawable» и «drawable-hdpi», и они, похоже, работают на моем телефоне LG Leon, но не работают на других телефонах. Похоже, изображение не масштабируется. https://mechanism.fr/misc/not_scaled.png

вот мой код: объявление переменных:

    Rect source1;
    Rect dest1;
    Rect arrow_box;
    Rect left_box;
    Rect right_box;
    Rect up_box1;
    Rect down_box1;
    Rect up_box2;
    Rect down_box2;

пример вычисления одной пары измерений Rect:

    private void calculateDimensions(){
(...)
            source1=new Rect(0,0,128,100);
            arrow_box=new Rect(0,0,300,300);
 left_box=new Rect((int)(0+boxxy/2),(int)(wysokosc*0.7),(int)(0+boxxy/2+boxxy),(int)(wysokosc*0.7+boxxy));

и ответственный коддля рисования:

            Paint drawPaint2 = new Paint();
                canvas.drawBitmap(arrow_left_off,arrow_box,left_box,drawPaint2);
                canvas.drawBitmap(arrow_right_off,arrow_box,right_box,drawPaint2);
                canvas.drawBitmap(arrow_up_off,arrow_box,up_box1,drawPaint2);
                canvas.drawBitmap(arrow_down_off,arrow_box,down_box1,drawPaint2);
            canvas.drawBitmap(arrow_up_off,arrow_box,up_box2,drawPaint2);
            canvas.drawBitmap(arrow_down_off,arrow_box,down_box2,drawPaint2);

размеры рассчитываются после создания вида холста:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        kanwas=new CanvasV(this);
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(kanwas);
        getDimensions();
        calculateDimensions();
        updateScreen();


    }

Я не совсем понимаю, в чем проблема.

Я попытался скопировать изображения в папки «drawable» и «drawable-hdpi»

1 Ответ

0 голосов
/ 13 октября 2019

Кроме того, масштабируйте растровые изображения. Масштабирование холста ничего не делает.

Пример масштабирования растрового изображения

bitmap = Bitmap.createScaledBitmap (src, dstWidth, dstHeight, filter)

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