Android позиционирует drawBitmap, который использует прямоугольник - PullRequest
0 голосов
/ 13 марта 2012

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

 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 на где Я хочу, чтобы это пошло?

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

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

1 Ответ

0 голосов
/ 13 марта 2012

Это фрагмент кода из того поста, на который вы ссылались:

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, потому что width - width будет 0, а height - height будет 0.

...