Показать часть растрового изображения на холсте в Android - PullRequest
2 голосов
/ 16 декабря 2011

Я пытаюсь создать инструмент увеличения в моем приложении для Android. Для этого у меня есть ImageView, который я преобразовал в растровое изображение (с некоторым коэффициентом масштабирования / масштабирования).

imageView.setDrawingCacheEnabled(true);
Bitmap drawingCache = imageView.getDrawingCache(true);
Matrix matrix = new Matrix();
matrix.postScale(5, 5);        

Bitmap viewCapture = Bitmap.createBitmap(drawingCache, 0, 0, 
                                         drawingCache.getWidth(),
                                         drawingCache.getHeight(), 
                                         matrix, true);
imageView.setDrawingCacheEnabled(false);

Теперь я рисую это растровое изображение "viewCapture" на холсте. Здесь я хочу, чтобы на холсте отображалась только часть изображения.

Я пытался использовать подходы: "setRectToRect () на матрице", "canvas.drawBitmap (bitmap, src, dst, paint)". Но не сработало должным образом.

Было бы полезно использовать SurfaceViews? Кто-нибудь сталкивался с такой ситуацией? Пожалуйста, оставьте свои мысли / идеи.

Ответы [ 2 ]

3 голосов
/ 16 декабря 2011

Почему бы просто не использовать следующее?

 Canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)

src соответствует какой области растрового изображения вы хотите нарисовать, а dst говорит, где вы хотите нарисовать растровое изображение. Подробнее об этом можно прочитать здесь: http://developer.android.com/reference/android/graphics/Canvas.html

0 голосов
/ 16 декабря 2011

Когда я это делаю, я получаю уменьшенное изображение растрового изображения вместо обрезанного изображения.Ниже приведен фрагмент, который я использовал.

            Canvas c = holder.lockCanvas();
            c.drawRGB(10, 10, 10);              
            Rect src = new Rect((int)x - _image.getWidth(), (int) y - _image.getHeight(), (int)x + _image.getWidth(), (int) y + _image.getHeight());
            RectF dst = new RectF((int)x - 50, (int) y - 50, (int)x + 50, (int) y + 50);
            c.drawBitmap(_image, src, dst, null);
            holder.unlockCanvasAndPost(c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...