Масштабирование и панорамирование просмотра в Android - PullRequest
8 голосов
/ 07 апреля 2011

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

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

public class DrawView extends ImageView{
    @SuppressWarnings("unused")
    private static final String TAG = "DrawView";
    Painter painter = new Painter();
    PathStack pathStack;
    private DrawApplication drawApplication;

    public DrawView(Context context, AttributeSet attr) {
        super(context,attr);
        setFocusable(true);
        setFocusableInTouchMode(true);
        drawApplication=(DrawApplication)context.getApplicationContext();
        pathStack=drawApplication.getPainter().getPathStack();
        painter=drawApplication.getPainter();
        setScaleType(ScaleType.MATRIX);

    }

    @Override
    public void onDraw(Canvas canvas) {
        float scaleFactor=drawApplication.getScaleFactor();
        canvas.scale(scaleFactor, scaleFactor,(float)getWidth()/2,(float)getHeight()/2);
        List<DrawingPath> currentStack=pathStack.getCurrentStack();

        for (DrawingPath drawPath : currentStack) {
            drawPath.draw(canvas, painter);

        }

    }
}

многое видно из кода, например, сохранение пути в drawapplication и т. Д.

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

также я должен уметь правильно рисовать.

Я пробовал масштабирование холста, но это хуже всего, потому что после масштабирования я не могу рисовать до точки касания, а также меньше рисовать на экране, что приводит к большему количеству рисования для вида.

рисование на виджете также является очень длительной задачей, что приводит к снижению производительности. Пожалуйста, предоставьте любой способ.

а также я использую API-уровень 10.

Edit1

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

Edit2

если мы сможем масштабировать путь, то это может решить мою проблему

Edit3

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

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Подобные вопросы по SO:

Может быть сделано в сотах (API 11-го уровня), но не должным образом.

0 голосов
/ 07 апреля 2011

Я не думаю, что нормальный вид можно увеличить. Вы можете фиксировать события касания и соответственно масштабировать виджеты.

...