2010-12-29 3 views
4

Этот выглядит как немой вопрос, но я не мог видеть никакого способа сделать это, используя методы класса Drawable. Тогда я подумал, может быть, мне придется каким-то образом перевернуть холст. Все еще не удалось найти подходящий метод.Перевернутый на оси X или Y

Мне просто нужно «перевернуть» Drawable на оси y. Предпочтительно центр y. Как я могу это сделать?

ответ

8

С уровня 10 тыс. Футов вы хотите создать новое растровое изображение и указать матрицу преобразования, чтобы перевернуть растровое изображение.

Это может быть немного перебор, но вот небольшое примерное приложение, которое иллюстрирует, как это сделать. Как было записано, предварительная масштабировка матрицы преобразования (-1.0f, 1.0f) переворачивает изображение в направлении x, предварительный масштаб (1.0f, -1.0f) перевернет его в направлении y.

public class flip extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //Set view to our created view 
     setContentView(new drawView(this)); 
    } 

    private class drawView extends View{ 
     public drawView(Context context){ 
      super(context); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 

      //Load the jellyfish drawable 
      Bitmap sprite = BitmapFactory.decodeResource(this.getResources(), R.drawable.jellyfish); 

      //Create a matrix to be used to transform the bitmap 
      Matrix mirrorMatrix = new Matrix(); 

      //Set the matrix to mirror the image in the x direction 
      mirrorMatrix.preScale(-1.0f, 1.0f); 

      //Create a flipped sprite using the transform matrix and the original sprite 
      Bitmap fSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), mirrorMatrix, false); 

      //Draw the first sprite 
      canvas.drawBitmap(sprite, 0, 0, null); 

      //Draw the second sprite 5 pixels to the right of the 1st sprite 
      canvas.drawBitmap(fSprite, sprite.getWidth() + 5, 0, null); 
     } 
    } 
} 
+0

Спасибо! Я пока мало знаю об использовании Matrices. Может быть, это поможет мне понять: p – Snailer

+0

Зачем вам продлевать действие? Я не могу представить себе случай, когда вы хотите, чтобы весь контентный вид был «битмапом», перевернутым –

+0

«Это может быть немного перебор, но вот небольшое примерное приложение». Это полностью автономный пример, он оставлен как упражнение для его реализации таким образом, который имеет смысл для вашего использования. –

Смежные вопросы