Я работаю с холстом, беря изображение в качестве фона и пытаюсь реализовать функцию масштабирования. Я хочу увеличить масштаб в точке, где пальцы зажаты и уменьшены, будет работать через центральные координаты, как и функция галереи изображений. Я прошел через множество учебников и прочитал много потоков об этом. Независимо от того, что я реализовал до сих пор, я либо поддерживаю увеличение и уменьшение масштаба в той же точке, либо если я применяю его к изображению, то все, что я рисую на холсте, не увеличивается, только фоновое изображение масштабируется и исчезает.Реализация увеличения на холсте
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
onDrawReady = true;
// for eraser
canvas.saveLayerAlpha(0, 0, canvas.getWidth(), canvas.getHeight(), 0xff, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
imageRenderedAtLeastOnce = true;
if (delayedZoomVariables != null) {
setZoom(delayedZoomVariables.scale, delayedZoomVariables.focusX,
delayedZoomVariables.focusY, delayedZoomVariables.scaleType);
delayedZoomVariables = null;
}
canvas.concat(matrix);
for (DrawObject d : paths) {
if (d.getType() == MODE_DRAWING) {
canvas.drawPath(d.getPair().first, d.getPair().second);
} else if (d.getType() == MODE_TEXT) {
canvas.drawText(d.getText(), d.getX(), d.getY(),
d.getPair().second);
} else if (d.getType() == MODE_ARROW) {
canvas.drawLine(d.getStartX(), d.getStartY(), d.getX(),
d.getY(), d.getPair().second);
fillArrow(canvas, d.getStartX(), d.getStartY(), d.getX(),
d.getY(), d.getPair().second);
} else if (d.getType() == MODE_CIRCLE) {
RectF oval2 = new RectF(d.getStartX(), d.getStartY(), d.getX(),
d.getY());
canvas.drawOval(oval2, d.getPair().second);
} else if (d.getType() == MODE_RECTANGLE) {
canvas.drawRect(d.getStartX(), d.getStartY(), d.getX(),
d.getY(), d.getPair().second);
} else if (d.getType() == MODE_ERASE) {
canvas.drawPath(d.getPair().first, d.getPair().second);
}
}
canvas.save();
}
доли того, что вы пытались до сих пор – AnswerDroid
[TouchImageView Library] (https://github.com/MikeOrtiz/TouchImageView) Это одна вещь, которую я нашел и играл вокруг нее. – Shubham
вы должны прочитать больше на 'Canvas # saveLayerAlpha' и' Canvas # save' – pskink