Android позиционирует drawBitmap, который использует rect

Я искал на этом сайте, чтобы узнать, как повернуть изображение вперед и назад, и придумал свой собственный с помощью другого поста на этом сайте, он отлично работает, единственная проблема в том, что теперь он работает, поэтому он вращается назад и вперед. вперед, как мне это нравится, как, черт возьми, мне теперь расположить его на экране? Вот код до сих пор:

 private Bitmap ray;
    private  int mRot = -33;
    private boolean goRight = true;

    void onRotDraw(Canvas canvas)
    {
        int width = ray.getWidth();
        int height = ray.getHeight();

        if (mRot > 30){
            goRight = false;
        }
        if (mRot < -30){
            goRight = true;
        }
        if (goRight){
            mRot += 1;
        }else
        {
            mRot -= 1;
        }
               canvas.rotate(mRot,width / 2,height / 2);
               this.Draw_Sprite(canvas, 0, mRot ); 

    }

    public void Draw_Sprite(Canvas c, int whatever, int rot) {  
        //rotating image back and forth
        int width = ray.getWidth();
        int height = ray.getHeight();
         Rect src = new Rect(width - width, height - height, width, height);
         Rect dst = new Rect(width - width, height - height,   width,  height); 
         c.drawBitmap(this.ray, src, dst, null);
    }

Обычно с помощью drawBitmap я использую его для позиционирования своих изображений, но этот использует src и dst вместо размера прямоугольника, так что теперь он отлично работает, но как мне изменить положение на экране с 0,0 до того, где я хочу? идти?

это было частично или в основном взято из этого сообщения: Вращение спрайта в Android с использованием Canvas.DrawBitmap. Я рядом, что я делаю не так?

Это дало мне все, что мне нужно было, кроме того, как установить положение x и y на экране, любая помощь в этом была бы очень признательна, я ломал себе голову, пытаясь найти способ получить этот набор x и y не повезло, и это, вероятно, что-то простое. Заранее спасибо.


person user870286    schedule 12.03.2012    source источник


Ответы (1)


Это фрагмент кода из другого сообщения, на которое вы ссылались:

Rect src = new Rect(0, 0, width, height);
Rect dst = new Rect(x, y, x + width, y + height);

Это x и y в dst Rect, которые определяют местоположение растрового изображения.

Ваш код:

Rect src = new Rect(width - width, height - height, width, height);
Rect dst = new Rect(width - width, height - height,   width,  height);

Всегда будет рисовать его в 0, 0, потому что ширина-ширина будет 0, а высота-высота будет 0.

person Joe    schedule 12.03.2012
comment
это было глупо с моей стороны, хорошо, я получил эту часть, спасибо за это, но теперь я столкнулся с другой проблемой, когда я устанавливаю dst и добавляю 50 ко всему, что теперь не вращается должным образом, даже если я добавляю те же числа к и src, и dst вращаются все шатко (если это слово), но если они у меня все такие, как у меня, они красиво вращаются, это проблема масштабирования? Я пробовал dst = newRect(50,50,50+ширина,50+высота) - person user870286; 13.03.2012
comment
неважно, я идиот, лол, я забыл добавить 50 и к другой части canvas.rotate(mRot,50 + (width/2),50 + (height/2)); теперь все отлично работает, спасибо, что ответили мне на этот простой вопрос, я ценю время, которое вы потратили на это. - person user870286; 13.03.2012