Можно ли нарисовать 2 Ректа и отрывок первого? - PullRequest
0 голосов
/ 04 августа 2011

РЕДАКТИРОВАТЬ: -> ЭЙ, ПАРНИ! <- </p>

Я работаю над приложением на основе изображений! Что я хочу сделать, это:

  1. Сфотографируйте (готово)
  2. Предварительный просмотр фотографии с наложением!
  3. Обрезать фото

Так что проблема в оверлее! У меня есть SurfaceView с снятой фотографией внутри, и теперь я хочу видеть квадрат, похожий на окно (rect2) и вокруг альфа-оверлея (rect1 - какой-то черный с альфа-50%). Можно ли нарисовать 2 Rect, один в полном размере (rect1) и один в меньшем размере (rect2), а затем вырезать меньший из первого Rect ??

______________
|Rect1       |
|   ______   |
|  |Rect2 |  |
|  |      |  |
|  |______|  |
|____________| 

Я использую Android 2.1. Я знаю, что в 2.3.3 есть BitmapRegionDecoder! эта вещь делает почти то, что я хочу сделать. В данный момент я рисую 4 Rect и оставляю маленькое отверстие в середине для окна, но это как боль в моем A **, чтобы переместить этот квадрат и изменить его размер.

РЕДАКТИРОВАТЬ: То, что я хочу сделать, это как в Facebook, если вы загружаете изображение в виде Profileimage, вы должны переместить и изменить размер квадрата на вашем изображении для изображения «аватар» слева, когда вы публикуете что-то ...

Так что я надеюсь, что все ясно, и вы можете мне помочь!

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 августа 2011
public class yourActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new yourCanvas(this));
}

class yourCanvas extends View {
    public Panel(Context context) {
        super(context);
    }

    @Override
    public void onDraw(Canvas canvas) {
        Bitmap yourBitmap = getYourBitmap();
        canvas.drawBitmap(_yourBitmap, 50, 50, null);
        canvas.drawRect(0,0,canvas.getWidth(),50,null); //top rect
        canvas.drawRect(0,0,50,canvas.getHeight(),null); //left rect
        canvas.drawRect(50+yourBitmap.getWidth(),0,canvas.getWidth(),canvas.getHeight(),null); //right rect
        canvas.drawRect(0,50+yourBitmap.getHeight(),canvas.getWidth(),canvas.getHeight(),null); //Bottom rect
    }
}

}


предыдущий ответ подходит, если вы просто хотите создать рамку для вашего изображения

Я хотел бы предложить следующее:

  1. установка растрового изображения ImageView на ваше растровое изображение
  2. установка цвета фона на цвет, который вы хотите, чтобы внешний прямоугольник был
  3. установка параметров заполнения для получения желаемых размеров
0 голосов
/ 04 августа 2011

Вы можете использовать FrameLayout, как контейнер, и для позиционирования вашего SurfaceView (ваш прямоугольник). А с помощью removeView вы можете удалить нужный прямоугольник, захватив с помощью findviewbyid.

Надеюсь, это поможет вам. прощай

...